- 27
- 0
- 约7.12千字
- 约 45页
- 2016-08-04 发布于重庆
- 举报
第四章Verilog设计初步与入门
可编程逻辑器件与EDA
第四讲
Verilog设计入门
4.1 组合电路的Verilog描述
4.1.1 2选1多路选择器及其Verilog描述
4.1.1 2选1多路选择器及其Verilog描述
4.1 组合电路的Verilog描述
1.模块表达
2.端口语句、端口信号名和端口模式
4.1 组合电路的Verilog描述
4.1.1 2选1多路选择器及其Verilog描述
module MUX21a(a,b,s,y);
input a,b,s;
output y;
assign y=(s? a:b);
endmodule
3.赋值语句和条件操作符
4.关键字
5.标识符
6.规范的程序书写格式
7.文件取名和存盘
4.1 组合电路的Verilog描述
4.1.1 2选1多路选择器及其Verilog描述
module MUX21a(a,b,s,y);
input a,b,s;
output y;
assign y=(s? a:b);
endmodule
4.1.2 4选1多路选择器及其case语句表述方式
4.1 组合电路的Verilog描述
module MUX41a(a,b,c,d,s1,s0,y);
input a,b,c,d;
input s1,s0;
output y;
reg y;
always @(a,b,c,d,s1,s0)
begin
case ({s1,s0})
2b00 : y=a;
2b01 : y=b;
2b10 : y=c;
2b11 : y=d;
default: y=a;
endcase
end
endmodule
4.1.2 4选1多路选择器及其case语句表述方式
4.1 组合电路的Verilog描述
1.reg型变量定义
4.1 组合电路的Verilog描述
4.1.2 4选1多路选择器及其case语句表述方式
(1)Verilog中最常用的两种变量:寄存器型和网线型
(2)模块中涉及的信息必须定义其类型;
(3)默认的变量类型为网线型(wire);
(4)过程语句中被赋值的变量必须为寄存器型;
选择正确的数据类型
module top;
wire y;
reg a, b;
DUT u1 (y, a, b) ;
initial begin
a = 0; b = 0;
#5 a = 1;
end
endmodule
module DUT (Y, A, B);
output Y;
input A, B;
wire Y, A, B;
and (Y, A, B) ;
endmodule
输入端口可以由net/register驱动,但输入端口只能是net
输出端口可以是net/register类型,输出端口只能驱动net
在过程块中只能给register类型赋值
若Y,A,B说明为reg则会产生错误。
in1
in2
O
A
B
Y
双向端口输入/输出只能是net类型
4.1 组合电路的Verilog描述
2.过程语句
4.1 组合电路的Verilog描述
4.1.2 4选1多路选择器及其case语句表述方式
(1)可用 or 连接所有敏感信号;
(2)可用 逗号(,)区分或连接所有敏感信号;
(3)可用通配符 * 省略形式给出所有敏感信息;
注:试图通过选择性地列出敏感信号来改变逻辑设计是无效的。
3.块语句begin_ end
4.case条件语句和4种逻辑状态
4.1 组合电路的Verilog描述
4.1.2 4选1多路选择器及其case语句表述方式
case语句使用事项:
case语句是测试表达式与另外一系列表达式分支是否匹配的一个多路条件语句。
Case语句进行逐位比较以求完全匹配(包括x和z)。
Default语句可选,在没有任何条件成立时执行。此时如果未说明default,Verilog不执行任何动作。
多个default语句是非法的。
重要内容:
使用default语句是一个很好的编程习惯,特别是用于检测x和z。
Casez和casex为case语句的变体,允许比较无关(don‘t-care)值。
case表达式或case项中的任何位为无关值时,在比较过程中该位不予考虑。
在casez语句中,? 和 z 被当作无关值。
在casex语句中,?,z 和 x 被当作无关值。
case 表达式
表达式, 表达式:赋值语句或空语句;
表达式, 表达式:赋值语句或空语句;
default:赋值语句或空语句
原创力文档

文档评论(0)