การสร้างแบบจำลองขอบด้านบวกทริกเกอร์ T flip flop ด้วย asynchronous clear
Aug 19 2020
ฉันกำลังสร้างแบบจำลองขอบด้านบวกที่เรียกใช้ฟลิปฟล็อป T ที่มีความชัดเจนแบบอะซิงโครนัส นี่คือรหัส:
module t_flip_flop_exam (q,clk,clear,t);
input t ;
input clk;
input clear;
output reg q ;
reg internal_t;
always @ (clear)begin
if (clear==1)
q=0;
else
q=q;
end
always @ (posedge clk)begin
if (t==1)
q=~q;
else
q=q;
end
endmodule
นี่คือรหัสที่มีประสิทธิภาพหรือไม่? เป็นเรื่องปกติที่จะต้องแยกalways
บล็อกหรือมีวิธีรวมทั้งรหัสพฤติกรรมclear
และclk
สัญญาณในalways
บล็อกเดียวหรือไม่
คำตอบ
1 toolic Aug 19 2020 at 17:33
นี่เป็นวิธีทั่วไปในการรวมalways
บล็อก:
module t_flip_flop_exam (q,clk,clear,t);
input t;
input clk;
input clear;
output reg q;
always @(posedge clk or posedge clear) begin
if (clear)
q <= 0;
else if (t)
q <= ~q;
end
endmodule
เป็นการดีกว่าที่จะมอบหมายสัญญาณจากalways
บล็อกเดียว
ทริกเกอร์always
บล็อกบนposedge
ของclear
เพื่อสังเคราะห์ที่สามารถอนุมานตรรกะที่ต้องการ (ไม่ตรงกันชัดเจนสลับซิงโคร)
ใช้การกำหนดแบบไม่ปิดกั้น ( <=
) สำหรับลอจิกตามลำดับ
ไม่จำเป็นต้องทำอย่างโจ่งแจ้งq=q
เพราะเป็นการบอกเป็นนัยว่า