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

对于根本单元逻辑电路,应用Verilog语言提供的门级元件模型形容电路十分不便。

但随着电路复杂性的减少,应用的逻辑门较多时,应用HDL门级形容的工作效率就很低。

数据流建模可能在较高的形象级别形容电路的逻辑性能,并且通过逻辑综合软件,可能主动地将数据流形容转换成为门级电路。

数据流建模次要应用逻辑表达式,所以要理解各种运算符和表达式。

数据流建模

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

个别用法如下:

wire [位宽阐明] 变量名1,变量名2,……,变量名n;assign 变量名=表达式;

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

例:用数据流形容形式建设模型

$Y=D_{0} \cdot \bar{S}+D_{1} \cdot S$

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

a= =ba!=ba= = =ba!= =b
1010
c= =dc!=dc= = =dc!= =d
xx10

条件运算符

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

个别用法:

condition_expr ? expr1 : expr2;

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

运算符的优先级

优先级的程序从下向上顺次减少。

类型符号优先级别
取反! ~ -(求2的补码)最高优先级
算术* / + -
移位>> <<
关系< <= > >=
等于== !=
缩位& ~& ^ ^~ **\~\**
逻辑&& **\\**
条件?:最低优先级

参考文献:

  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解读,我的项目源码,面经总结。