从零学verilog系列(3)设计语言和描述方式

本文详细介绍了Verilog的设计语言和描述方式,包括数据流建模中的连续赋值,如显式和隐式赋值,以及行为级建模中的过程语句(initial、always)、语句块、条件分支和循环语句,为FPGA开发提供了深入理解。
摘要由CSDN通过智能技术生成

                               目录

1、数据流建模

1.1连续赋值

1.1.1显式连续赋值语句

1.1.2隐式 连续赋值语句

1.1.3连续赋值语句使用中的注意事项

2、行为级建模

2.1过程语句(initial、always)

2.1.1 initial过程语句

2.1.2 always过程语句

2.1.3 过程语句使用中的注意事项

2.2语句块

2.2.1串行语句块(begin...end)

2.2.2并行语句块(fork...join)

2.3过程赋值语句(在过程块中的赋值语句=、<=)

2.3.1阻塞赋值语句(=)

2.3.2非阻塞赋值语句(<=)

2.4条件分支语句

2.4.1 if_else语句

2.4.2 case语句

2.5 循环语句(多用于测试仿真)

2.5.1 forever语句

2.5.2 repeat语句

2.5.3 while语句

2.5.4 for语句

3、结构化建模

3.1模块级建模

3.2 门级建模

3.3开关级建

1、数据流建模(通过连续赋值语句进行逻辑描述的建模方式)

1.1连续赋值

        连续赋值语句(assign)只能对连线型(wire等)变量进行赋值,分为显式连续赋值语句、隐式连续赋值语句。

1.1.1显式连续赋值语句

格式如下:

连线型变量类型 位宽 名称

assign #(延时)名称=变量赋值表达式

1.1.2隐式 连续赋值语句

格式如下:

连续型变量类型 赋值驱动强度 位宽 #(延时)名称=变量赋值表达式

(赋值驱动强度和延时是可选项)

//例如:
wire [3:0] a,b,c;
assign #(2,1,3) c = a|b;  //显式



wire [3:0]#(2,1,3) c = a|b;  //隐式


1.1.3连续赋值语句使用中的注意事项

1)赋值目标只能是wire型,且assign连续赋值语句不能出现在过程块中

2)多个连续赋值语句之间是并行关系,与位置顺序无关。

2、行为级建模(从电路外部行为的角度对其进行逻辑描述的建模方式)

2.1过程语句(initial、always)

2.1.1 initial过程语句

格式如下:

initial
    begin
        语句1; 
        语句2;
        ...
        语句n;  
    end       //它在仿真过程中只执行一次,之后就不再执行。



//例:用initial产生测试信号
module initial_tb;
reg  s1;
initial
    begin
               s1=0;
        #10    s1=1;
        #20    s1=0;
        #100   $stop;
    end
endmodule

initial语句常出现于测试代码中,通常用于仿真模块中对激励向量的描述、或用于给reg型变量赋初值。

2.1.2 always过程语句

格式如下:

//例如:
always@(敏感事件列表)
    
        语句块                   //当列表中变量的值改变时,就会引发块内语句的执行

                        /*敏感信号分为边沿触发型、电平触发型两种。
                        电平触发:always@(a or b)
                        边沿触发:always@(posedge clk or negedge rst_n )*/


2.1.3 过程语句使用中的注意事项

1)在过程语句中,被赋值的信号必须定义为reg型

2)用其描述组合逻辑电路时,需把全部的输入的信号写入敏感列表 或always@(*)。

3)用其描述时序逻辑电路时,需把时间信号和部分输入信号写入敏感列表。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值