Verilog语法规则

模块声明类

module at7(<端口信号列表>...)
<逻辑代码>
endmodule

FPGA中常常定义各种模块,不同模块之间有接口,类似C语言中的不同函数,有不同的输入输出变量。

参数定义

parameter用于申明一些常量,便于模块的移植或升级时的修改。

信号类型

wire:不同寄存器之间的连线
reg:一个寄存器,可以进行赋值等操作

多语句定义

begin…end
可用于包含关系,相当于C语言中的{},若有强耦合关系的一组,则不需要用begin…end

begin	
	//可选申明部分
	//具体逻辑
end

比较判断和分支判断

比较判断:if…else

if()
begin
...
end
else
begin
...
end
if()
begin
...
end
else if)
begin
...
end
else
begin
...
end

分支判断:case…default…endcase

case(变量名)
取值1:具体逻辑1
取值2:具体逻辑2
取值3:具体逻辑3
default:具体逻辑4
endcase

任务定义

task…endtask 像是C语言中的子函数,有输入输出参数。
task是可综合的行为级语法,是顺序执行的,不是并行的。

task <task名>
	input 输入变量申明
	begin
	...
	end
endtask

连续赋值

  • assign
    assign可直接给wire型变量赋值:
    assign wire变量名 = 变量或常量
  • ?表达式
wire timer_cnt;
assign timer_vnt = (cnt == MAX_CNT_VALUE)1:0

always模块

//单个沿触发的时序逻辑
always @ (沿变化)
begin
...
end
//多个沿触发的时序逻辑
always @ (沿变化1 or 沿变化2)
begin
...
end

如:

always @ (posedge clk or negedge rst_n)
//上升沿posedge,下降沿negedge

赋值符号:=和<=(小等号)

=:阻塞,在组合逻辑中用,是顺序执行的
<=:非阻塞,在时序逻辑中用,两行语句在同一个时钟周期来到时是并行处理的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值