赞
踩
目录
半加器的逻辑表达式
半加器的电路结构,半加器的真值表,半加器电路的时序表达
- module h_adder (A,B,SO,CO);
- input A,B; //input 模块外部端口描述语句,输入
- output SO,CO; //output 同理,输出
- assign SO = A^B; //assign 用于描述逻辑功能和电路结构
- assign CO = A&B;
- endmodule
- module 模块名 (模块端口名表);
- 模块端口和模块功能描述
- endmodule
- input 端口名1,端口名2......; //输入端口
- output 端口名1,端口名2......; //输出端口
- inout 端口名1,端口名2......; //双向端口,如RAM的数据口,单片机的I/O口
-
- input[msb:lsb] 端口名1,端口名2......; //多信号端口或总线端口
msb:lsb 信号矢量的最高位和最低位
eg. output[0:3] C,D;
表示的是C[3:0],D[3:0]
C[3:0]表示:C[3],C[2],C[1],C[0]
逻辑与 &
逻辑异或 ^
- assign 目标变量名=驱动表达式;
- assign [延时] 目标变量名=驱动表达式;
-
- `timescale 10ns/100ps; //仿真的基本时间是10ns,仿真时间的精度是100ps
- assign #6 R1 = A & B; //6个时间单元才执行运算赋值,即60ns
注意!timescale前的符号为反单引号 ( ` ),不是单引号 ( ' )
- module MUX41a (a,b,c,d,s1,s0,y);
- input a,b,c,d;
- input s1,s0;
- output y;
- reg y;
- always@(a or b or c or d or s1 or s0)
- begin : MUX41
- case ({s1,s0})
- 2'b00:y=a;
- 2'b01:y=b;
- 2'b10:y=c;
- 2'b11:y=d;
- default :y=a;
- endcase
- end
- endmodule
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
代码解释
reg用于定义特定类型的的变量,即寄存器型变量或称寄存器型数据类型的变量
- reg 变量名1,变量名2,......;
- reg[msb:lsb] 变量名1,变量名2,......;
- always@(敏感信号及敏感信号列表或表达式)
- 包括块语句的各类顺序语句
- begin [:块名]
- 语句1;语句2;...语句n;
- end
- case(表达式)
- 取值1:begin 语句1;语句2;...语句n; end
- 取值2:begin 语句n+1;语句n=2;...语句n+m; end
- ...
- default : begin 语句n+m+1;...; end
- endcase
- 0。含义有四个,即二进制数0、低电平、逻辑0、事件为伪的判断结果。
- 1。含义也有四个,即二进制数1、高电平、逻辑1、事件为真的判断结果。
- z或Z。高阻态,或高阻值。
- x或X。不确定,或未知的逻辑状态。x与z大小写都不分。.
<位宽>'<进制><数字>
B二进制
O八进制
H十六进制
D十进制
- module MUX41a (a,b,c,d,s1,s0,y);
- input a,b,c,d,s1,s0;
- output y;
- wire [1:0] SEL;
- wire AT,BT,CT,DT;
- assign SEL = {s1,s0};
- assign AT = (SEL==2'D0);
- assign BT = (SEL==2'D1);
- assign CT = (SEL==2'D2);
- assign DT = (SEL==2'D3);
- assign y =(a&AT)|(b&BT)|(c&CT)|(d&DT);
- endmodule
- wire 变量名1,变量名2..;
- wire[msb:lsb] 变量名1,变量名2..;
wire与assign的赋值性质一致,
- wire Y= a1^a2;
- 可以取代
- wire a1,a2;
- assgin Y= a1^a2;
- module MUX41a (A,B,C,D,S1,S0,Y);
- input A,B,C,D,S1,S0;
- output Y;
- wire AT = S0?D:C;
- wire BT = S0?B:A;
- wire Y =(S1?AT:BT);
- endmodule
条件表达式 ? 表达式1 : 表达式2
wire AT = S0?D:C; //如果S0=1成立,则AT=D;如果S0=0,则AT=C
- module MUX41a (A,B,C,D,S1,S0,Y);
- input A,B,C,D,S1,S0;
- output Y;
- reg[1:0]SEL;
- reg Y;
- always @ (A,B,C,D,SEL)
- begin
- SEL = {S1,S0};
- if (SEL==0) Y=A;
- else if (SEL==1) Y=B;
- else if (SEL==2) Y=C;
- else Y=D;
- end
- endmodule
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。