行为级建模

本文详细介绍了Verilog硬件描述语言中的连续赋值语句特点、初始语句和always语句的使用场景、以及它们在行为级建模中的作用。特别强调了过程语句的可综合性和不可综合部分,如连续赋值与过程赋值的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连续赋值语句

特点:
1.赋值目标只能是线网类型(wire)
2.在连续赋值中,只要赋值语句右边表达式任何一个变量有变化,表达式立即被计算,计算的记过立即赋值给左边的信号(若没有定义延时量)
3.连续赋值语句不能出现在过程块中。
4.多个连续赋值语句之间是并行语句,因此与位置顺序无关。
5.连续赋值语句中的延时具有硬件电路中惯性延时的特性,任何小于其延时的信号变化脉冲都将被滤除掉,不会体现在输出端口上。

硬件电路的延迟决定了工作频率。工作频率越高,干扰越容易到达输出端。

惯性延迟,惯性延迟小于干扰,干扰起作用,反之不起作用。
可以直接生成语句。

行为级建模

过程语句 initial语句 不具有综合性
always语句 可综合性

语句块 串行语句块 begin-end 可综合
并行语句块 fork-join 不可综合

赋值语句 过程连续赋值 assign 不可综合 //与连续赋值assign一点关系都没有
过程赋值 =,<= 可综合

条件语句 if-else 可综合
case,casez,casex 可综合

循环语句 forever 不可综合
repeat 不可综合
while 不可综合

initial语句 - 主要用在仿真,调试。硬件电路主要靠复位信号初始化。全局复位用复位信号。使用风险大,
initial过程语句的语法格式:
initial
begin
语句1;
语句2;
语句3;

语句n;
end
///////////////////////////////////////////

过程语句inital与always语句

例:用initial过程语句对变量ABC进行赋值
module inital_tb1;
reg A ,B,C;
inital
begin
A=0;B=0;C=0;
#100 A=1;B=0;
#100 A=0;C=1;
#100 B=1;
#100 B=0;C=0;
end
endmodule

always语句
从语法描述角度,always语句块的触发状态时一直存在的,只要满足always后面的敏感事件列表,就执行过程块。
其语法格式:
always@(敏感事件列表)
语句块;
敏感事件表没有and与的概念。

@(a) //当a信号值发生改变时
@(a or b) //当a或b信号值发生改变时 @(a,b)
@(poseedge clk) //当时钟上升沿到来时
@(negedge clk) //当始终下降沿到来时
@(poseedge clk or negedge clk) //当上升沿或者下降沿

**注意1:**always使用作为组合电路进行描述时,所有需要的敏感条件需要全部写入();
**注意2:always使用作为时许逻辑电路进行描述时,时钟信号和需要的信号写入();

D 触发器为clk边沿有效。
fpga 没有异步清零信号。

$finish 为结束语句,用于退出仿真。

module mux4_1 (out,in0,in1,in2,in3,sel)
output out;
input in0,in1,in2,in3;
input[1:0] sel;

reg out;

always@(in0 or in1 or in2 or in3 or sel)
case (sel)
2’b00 out = in0;
2’b01 out = in1;
2’b10 out = in2;
2’b11 out = in3;
default out = 2’bx;
endcse
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值