第4個示例.七段數(shù)碼管


這里新的語法點就是{,,}代表的拼接運算符,有點像C語言里的strcat函數(shù)
第5個示例.D觸發(fā)器——時序邏輯電路的描述方法
module d_ff (q, d, clk);
output q;
input d, clk;
reg q;
always @(posedge clk)
q=d;
endmodule
posedge上升沿檢測語句(從0 變?yōu)? 、0 變?yōu)閤 和z 、或者從x ,z 變?yōu)?),negedge下降沿(從1 變?yōu)? 、1 變?yōu)閤 和z 或者從x ,z 變?yōu)?)
這里既然進(jìn)入了時序電路單元的描述,首先了解Verilog中變量的賦值
Verilog有兩種賦值語句:
1.assign:連續(xù)賦值語句,=賦值,主要用于組合邏輯
2.always:過程賦值,reg變量賦值,分兩類:阻塞類“=”(意味著立即執(zhí)行),非阻塞類“<=”(語句塊中的語句同時被賦值),通常時序用后者
同時,有以下原則需要遵守:
原則1 :在同一個always 塊中同時建立時序和組合邏輯電
路時,用非阻塞賦值。
原則2:在同一個always 塊中不要同時使用非阻塞賦值和
阻塞賦值。
原則3 :不要在多個always 塊中為同一個變量賦值


第6個示例.計數(shù)器
同步清零4位加法計數(shù)器
module count(out,data,load,reset,clk);
output[7:0] out;
input[7:0] data;
input load,clk,reset;
reg[7:0] out;
always @(posedge clk) //clk 上升沿觸發(fā)
begin
if (!reset) out <= 8'h00; // 同步 清零,低電平有效
else if (!load) out <= data; // 同步置數(shù)
else out <= out + 1; // 計數(shù)
end
endmodule
熟悉if(?。┦浅绦虻陀行У谋磉_(dá)
異步清零
module count2(out,reset,clk);
output[7:0] out ;
input clk, reset ;
reg[7:0] out ;
always @(posedge clk or negedge reset)
begin
if(!reset)
out<= 0 ;
else
out<= out + 1; // 計數(shù)
end
endmodule
扭環(huán)形計數(shù)器
