数字电路实验(二)——三态门与多路复用器

1、实验步骤:
A三态门:

1个vhd文件,用来定义顶层实体
1个vwf文件,用来进行波形仿真,将验证的波形输入
1、新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验二\三态门】)-【next】(设置文件名【goodluck】)-【next】(设置芯片类型为【cyclone-EP1CT144C8】)-【finish】
(2).新建:【file】-【new】(【design file-VHDL file】)-【OK】
2、写好源代码,保存文件(goodluck.vhd)。
3、编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译。编译结果有一个警告,文件编译成功。
4、波形仿真及验证。新建一个vector waveform file。按照程序所述插入a,en,y三个节点(a、en为输入节点,y为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置a,en的输入波形…点击保存按钮保存。(操作为:点击name(如:en))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name a(如0,1,5),保存)。然后【start simulation】,出name y的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。

B 2-1多路复用器:

2个vhd文件,两个实体,一个定义顶层实体,一个定义三台门实体
1个vwf文件,用来进行波形仿真,将验证的波形输入
1、新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验二\2-1多路复用器】)-【next】(设置文件名【gg】)-【next】(设置芯片类型为【cyclone-EP1CT144C8】)-【finish】
(2).新建:【file】-【new】(【design file-VHDL file】)-【OK】
2、写好源代码,保存文件(gg.vhd)。
3、编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译。编译结果有一个警告,文件编译成功。
4、波形仿真及验证。新建一个vector waveform file。按照程序所述插入a0,b0,s,y四个节点(a、en为输入节点,y为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置a,en的输入波形…点击保存按钮保存。(操作为:点击name(如:s))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name a0,b0(如0,1,5),保存)。然后【start simulation】,出name y的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。

C 参数化多路复用器:

2个vhd文件,用来定义和实现带参数顶层实体文件,一个用来调用顶层实体(示例)和实现该参数下的多路复用器
1个vwf文件,用来进行波形仿真,将验证的波形输入
1、 新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验二\参数化多路复用器7】)-【next】(设置文件名【gg】)-【next】(设置芯片类型为【cyclone-EP1CT144C8】)-【finish】
(2).新建:【file】-【new】(【design file-VHDL file】)-【OK】
2、写好源代码,保存文件(gg.vhd)。
3、编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译。编译结果有一个警告,文件编译成功。
4、波形仿真及验证。新建一个vector waveform file。按照程序所述插入a,b,s三个节点(a、b为输入节点,s为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置a,b的输入波形…点击保存按钮保存。(操作为:点击name(如:a))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=2ns),同理设置name b保存)。然后【start simulation】,出name y的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。

2、实验过程
A.三态门实验
a.源代码

数字电路实验(二)——三态门与多路复用器
代码解释:
一个实体的vhdl文件,实体中主要执行一个if选择操作,采用数据流描述即可,注意if选择语句一定要写在process里面
b.逻辑图
数字电路实验(二)——三态门与多路复用器
c.波形仿真
数字电路实验(二)——三态门与多路复用器
数字电路实验(二)——三态门与多路复用器
波形设计解释:
在en=0的时候输出高阻态
在en=1的时候输出a的值
结果分析及结论
0-5ns:输入端en=0,输出结果为高阻态,正确
5-10ns:输入端en=1,输出结果为a,正确

B.2-1多路复用器实验
a.源代码

数字电路实验(二)——三态门与多路复用器
代码解释:
两个实体的vhdl文件,第一个实体进行的是定义了一个三态门,第二个实体是通过调用三态门来实现2选1多路复用器
b.逻辑图
数字电路实验(二)——三态门与多路复用器
c.波形仿真
数字电路实验(二)——三态门与多路复用器
数字电路实验(二)——三态门与多路复用器
波形设计解释:
在s=0的时候,b0所在的三态门输出b0的值,a0所在的三态门为高阻态
在s=1的时候,a0所在的三态门输出a0的值,b0所在的三态门为高阻态
结果分析及结论
0-5ns:输入端s=0,输出结果为b0,正确
5-10ns:输入端s=1,输出结果为a0,正确

C.参数化多路复用器实验
a.源代码

第一个文件
数字电路实验(二)——三态门与多路复用器
第二个文件
数字电路实验(二)——三态门与多路复用器
代码解释:
对底层元件的声明和定义,实体带有参数n,实体声明a,b都是逻辑向量,输入端口为a,b,输出端口为s,通过结构化描述。调用conv_integer函数将二进制数转换成十进制数,最后再通过i选择b向量的哪一位输出。
示例中完成一个四选一多路复用器,a为二维向量表示选择输入,b是四维向量表述信息输入,s是输出端口。
b.逻辑图(过于复杂,展示RTL图)
数字电路实验(二)——三态门与多路复用器
c.波形仿真
数字电路实验(二)——三态门与多路复用器
波形设计解释:
a为1 1,输出为b(3);a为1 0,输出为b(2);a为0 1,输出为b(1);a为0 0,输出为b(0);
结果分析及结论
参数为2,进行的是四选一多路复用器,以b=0101为例
40-42ns:a=00,输出b(0)为1
42-44ns:a=01,输出b(1)为0
44-46ns:a=10,输出b(2)为1
46-48ns:a=11,输出b(3)为0