写点什么

Verilog HDL 数据流建模与运算符

作者:timerring
  • 2023-01-30
    甘肃
  • 本文字数:1413 字

    阅读完需:约 5 分钟

⭐本专栏针对 FPGA 进行入门学习,从数电中常见的逻辑代数讲起,结合 Verilog HDL 语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机 FSM 进行剖析与建模。🔥文章和代码已归档至【Github 仓库:hardware-tutorial】,需要的朋友们自取。或者关注公众号【AIShareLab】,回复 FPGA 也可获取。


对于基本单元逻辑电路,使用 Verilog 语言提供的门级元件模型描述电路非常方便。


但随着电路复杂性的增加,使用的逻辑门较多时,使用 HDL 门级描述的工作效率就很低。


数据流建模能够在较高的抽象级别描述电路的逻辑功能,并且通过逻辑综合软件,能够自动地将数据流描述转换成为门级电路。


数据流建模主要使用逻辑表达式,所以要了解各种运算符和表达式。

数据流建模

数据流建模使用的连续赋值语句,由关键词 assign 开始,后面跟着由操作数和运算符等组成的逻辑表达式。


一般用法如下:


wire [位宽说明] 变量名1,变量名2,……,变量名n;assign 变量名=表达式;
复制代码


注意,assign 语句只能对 wire 型变量进行赋值,所以等号左边变量名的数据类型必须是 wire 型。

例:用数据流描述方式建立模型


module mux2to1_dataflow(D0, D1, S, Y );  input D0, D1, S;    output Y;  wire Y ; 
//下面是逻辑功能描述 assign Y = (~S & D0) | (S & D1); //表达式左边Y必须是wire型
endmodule
复制代码

例:用条件运算符描述 2 选 1 的数据选择器。

module mux2x1_df (D0,D1,S,L);   input D0,D1,S;   output L;
assign L = S ? D1 : D0;
endmodule
复制代码


条件运算符:如果 S=1,则输出 L=D1;否则 L=D0。

例:用数据流建模方法对 2 线-4 线译码器的行为进行描述。


module decoder_df (A1,A0,E,Y);   input A1,A0,E;   output [3:0] Y;       assign Y[0] = ~(~A1 & ~A0 & ~E);       assign Y[1] = ~(~A1 &   A0 & ~E);       assign Y[2] = ~(  A1 & ~A0 & ~E);       assign Y[3] = ~(  A1 &   A0 & ~E);endmodule
复制代码

运算符及其优先级

运算符 (9 类)

位拼接运算符

作用是将两个或多个信号的某些位拼接起来成为一个新的操作数,进行运算操作。


设A=1’b1,B=2’b10,C=2’b00
则{B,C}=4’b1000{A,B[1],C[0]}=3’b110{A,B,C,3’b101}=8’b11000101。
复制代码


对同一个操作数的重复拼接还可以双重大括号构成的运算符{{}}


例如{4{A}}=4’b1111,{2{A},2{B},C}=8’b11101000。


A:4’b1010 、B:4’b1111,


相等与全等运算符

==(逻辑相等), !=(逻辑不等)===(条件全等),!==(条件不全等)


a、b 的初值同为 4’b0100,c 和 d 的初值同为 4’b10x0


条件运算符

是三目运算符,运算时根据条件表达式的值选择表达式。


一般用法:


condition_expr ? expr1 : expr2;
复制代码


首先计算第一个操作数 condition_expr 的值,如果结果为逻辑 1,则选择第二个操作数 expr1 的值作为结果返回;如果结果为逻辑 0,则选择第三个操作数 expr2 的值作为结果返回。

运算符的优先级

优先级的顺序从下向上依次增加。



参考文献:


  1. Verilog HDL 与 FPGA 数字系统设计,罗杰,机械工业出版社,2015 年 04 月

  2. Verilog HDL 与 CPLD/FPGA 项目开发教程(第 2 版), 聂章龙, 机械工业出版社, 2015 年 12 月

  3. Verilog HDL 数字设计与综合(第 2 版), Samir Palnitkar 著,夏宇闻等译, 电子工业出版社, 2015 年 08 月

  4. Verilog HDL 入门(第 3 版), J. BHASKER 著 夏宇闻甘伟 译, 北京航空航天大学出版社, 2019 年 03 月




欢迎关注公众号【AIShareLab】,一起交流更多相关知识,前沿算法,Paper 解读,项目源码,面经总结。

发布于: 刚刚阅读数: 3
用户头像

timerring

关注

公众号【AIShareLab】 2022-07-14 加入

公众号【AIShareLab】

评论

发布
暂无评论
Verilog HDL数据流建模与运算符_FPGA_timerring_InfoQ写作社区