系统:win10
平台:Quartus II
FPGA:EP4CE6
1 注释
与C语言一样,
//单行注释
/*
多行注释
*/
2 关键字
and always assign begin buf
bufif0 bufif1 case casex casez
cmos deassign default defparam disable
edge else end endcase endfunction
dprimitive endmodule endspecify endtable endtask
event for force forever fork
function highz0 highz1 if ifnone
initial inout input integer join
large macromodule medium module nand
negedge nor not notif0 notif1
nmos or output parameter pmos
posedge primitive pulldown pullup pull0
pull1 rcmos real realtime reg
release repeat rnmos rpmos rtran
rtranif0 rtranif1 scalared small specify
pecparam strength strong0 strong1 supply0
supply1 table task tran tranif0
tranif1 time tri triand trior
trireg tri0 tri1 vectored wait
wand weak0 weak1 while wire
wor xnor xor
常用的
关键字 含义
module 模块开始定义
input 输入端口定义
output 输出端口定义
inout 双向端口定义
parameter 信号的参数定义
wire wire 信号定义
reg reg 信号定义
always 产生reg信号语句的关键字
assign 产生wire信号语句的关键字
begin 语句的起始标志
end 语句的结束标志
osedge/negedge 时序电路的标志
case Case语句起始标记
default Case语句的默认分支标志
endcase Case语句结束标记
if if/else语句标记
else if/else语句标记
for for语句标记
endmodule 模块结束定义
3 程序框架
Verilog 的基本设计单元是“模块”(block)。
一个模块是由两部分组成的,一部分描述接口,另一部分描述逻辑功能。
每个Verilog程序包括4个主要的部分:
端口定义、IO说明、内部信号声明、功能定义。
module flow_led( //模块名为flow_led,, ()中定义端口
input sys_clk , //系统时钟 //IO说明
input sys_rst_n, //系统复位,低电平有效
output reg [3:0] led //4个LED灯
);
//reg define
reg [23:0] counter;
//*****************************************************
//** main code
//*****************************************************
//计数器对系统时钟计数,计时0.2秒
always @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n)
counter <= 24'd0;
else if (counter < 24'd1000_0000)
counter <= counter + 1'b1;
else
counter <= 24'd0;
end
//通过移位寄存器控制IO口的高低电平,从而改变LED的显示状态
always @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n)
led <= 4'b0001;
else if(counter == 24'd1000_0000)
led[3:0] <= {led[2:0],led[3]};
else
led <= led;
end
endmodule
**
功能定义部分有三种方法:
1 assign语句 描述组合逻辑
2 always语句 描述组合/时序逻辑
3 实例元件 and #2 u1(q,a,b);
注意三种逻辑功能是并行的
注意:
在always块中, 逻辑是顺序执行的, 多个always是并行执行的
**
块的调用:
定义块
调用快