数字系统设计实验二:Verilog HDL门级描述方式

1.问题主干:
用Verilog HDL门级描述方式描述如下图所示的电路。
在这里插入图片描述

2.问题分析:
由上述电路图可以分析得到,共有4个三输入与门(其中有一个只有两个输入,实际是而输入与门),一个四输入或门,以及两个反相器。
门级的电路描述风格是不需要知道关系表达式的,在已知电路的前提下,通过简单的调用基本门ip即可实现这个电路的描述,并且代码与电路描述是一一对应的。
在代码中实现这个门级电路比较简单,反相器:not(a_n,a);三输入与门:and(out,a,b,c);三输入或门:or(out,a,b,c,d)。

3. 程序内容:
.v文件:

`timescale 1ns / 1ps
//
// Company: 
// Engineer:  jefferym
// 
// Create Date: 2022/03/18 10:40:31
// Design Name: 
//
module gate_test(D0,D1,D2,D3,S1,S2,Z);

input [0:0] S1,S2,D0,D1,D2,D3;
output [0:0] Z;//默认这些数据类型为wire,在基本门的表述中,输入输出都应该是wire

wire [0:0] T0,T1,T2,T3;//中间变量
wire [0:0] S1_N,S2_N;

not not1(S1_N,S1),
    not2(S2_N,S2);

and and1(T0,D0,S2_N,S1_N),
    and2(T1,D1,S1_N,S1),
    and3(T2,D2,S2_N,S1),
    and4(T3,D3,S2);
    
or or1(Z,T0,T1,T2,T3);
endmodule

tb文件:

`timescale 1ns / 1ps

module tb(Z);
output [0:0] Z;

reg [0:0] S1,S2,D0,D1,D2,D3;//下面将对这些输入进行在过程语句中进行赋值,因此必须为reg


gate_test my_gate_test(D0,D1,D2,D3,S1,S2,Z);//这里可以写作.D0(D0),也可以按顺序赋值,这样必须严格按照顺序来写

reg [5:0] cnt=6'b1;//计数变量,用于产生六位的测试信号
initial begin
D0=0;D1=0;D2=0;D3=0;S1=0;S2=0;
for(cnt=1;cnt<64;cnt=cnt+1)
    begin
    #2 {S2,S1,D3,D2,D1,D0}=cnt; //这里把s2,s1放在高位,D0放在低位,这样方便观察测试波形;
    end

end
endmodule

4. 实验结果:
在这里插入图片描述
和逻辑运算的结果一致。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值