⭐本专栏针对 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= =b | a!=b | a= = =b | a!= =b |
---|---|---|---|
1 | 0 | 1 | 0 |
c= =d | c!=d | c= = =d | c!= =d |
x | x | 1 | 0 |
条件运算符
是三目运算符,运算时依据条件表达式的值抉择表达式。
个别用法:
condition_expr ? expr1 : expr2;
首先计算第一个操作数 condition_expr 的值,如果后果为逻辑 1,则抉择第二个操作数 expr1 的值作为后果返回;如果后果为逻辑 0,则抉择第三个操作数 expr2 的值作为后果返回。
运算符的优先级
优先级的程序从下向上顺次减少。
类型 | 符号 | 优先级别 | ||
---|---|---|---|---|
取反 | ! ~ -(求 2 的补码) | 最高优先级 | ||
算术 | * / + – | |||
移位 | >> << | |||
关系 | < <= > >= | |||
等于 | == != | |||
缩位 | & ~& ^ ^~ **\ | ~\ | ** | |
逻辑 | && **\ | \ | ** | |
条件 | ?: | 最低优先级 |
参考文献:
- Verilog HDL 与 FPGA 数字零碎设计,罗杰,机械工业出版社,2015 年 04 月
- Verilog HDL 与 CPLD/FPGA 我的项目开发教程 (第 2 版), 聂章龙, 机械工业出版社, 2015 年 12 月
- Verilog HDL 数字设计与综合 (第 2 版), Samir Palnitkar 著,夏宇闻等译, 电子工业出版社, 2015 年 08 月
- Verilog HDL 入门 (第 3 版), J. BHASKER 著 夏宇闻甘伟 译, 北京航空航天大学出版社, 2019 年 03 月
欢送关注公众号【AIShareLab】,一起交换更多相干常识,前沿算法,Paper 解读,我的项目源码,面经总结。