大家好,又见面了,我是你们的朋友全栈君。
1、实验步骤:
A全加器:
1个vhd文件,用来定义顶层实体
1个vwf文件,用来进行波形仿真,将验证的波形输入
1、新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验三\全加器】)-【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。按照程序所述插入jinwei0,jiashu1,jiashu2,jieguo,jinwei1五个节点(jinwei0,jiashu1,jiashu2为输入节点,jieguo,jinwei1为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置jinwei0,jiashu1,jiashu2的输入波形…点击保存按钮保存。(操作为:点击name(如:jinwei0))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name jiashu1,jiashu2(如0,1,5),保存)。然后【start simulation】,出name jieguo,jinwei1的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。
B串行加法器:
4个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。按照程序所述插入clock,input_a,input_b,select_s,output_o,output_c六个节点(clock,input_a,input_b,select_s为输入节点,output_o,output_c为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置clock,input_a,input_b,select_s的输入波形…点击保存按钮保存。(操作为:点击name(如:clock))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name input_a,input_b,select_s(如0,1,5),保存)。然后【start simulation】,出name output_o,output_c的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。
C并行加法器-串行进位加法器:
2个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。按照程序所述插入jiashu1,jiashu2,jinwei,jieguo四个节点(jiashu1,jiashu2为输入节点,jinwei,jieguo为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置jiashu1,jiashu2的输入波形…点击保存按钮保存。(操作为:点击name(如:jiashu1))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name jiashu2(如0,1,5),保存)。然后【start simulation】,出name jinwei,jieguo的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。
D并行加法器-快速进位加法器:
2个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。按照程序所述插入input_x,input_y,output_s,output_c四个节点(input_x,input_y为输入节点,output_s,output_c为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置input_x,input_y的输入波形…点击保存按钮保存。(操作为:点击name(如:input_x))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name input_y(如0,1,5),保存)。然后【start simulation】,出name output_s,output_c的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。
E运算器:
8个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。按照程序所述插入clock,en,input_a,input_b,input_c,signal_s,output_c,output_r1,output_r2九个节点(clock,en,input_a,input_b,input_c,signal_s为输入节点,output_c,output_r1,output_r2为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置clock,en,input_a,input_b,input_c,signal_s的输入波形…点击保存按钮保存。(操作为:点击name(如:clock))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name en,input_a,input_b,input_c,signal_s(如0,1,5),保存)。然后【start simulation】,出name output_c,output_r1,output_r2的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。
2、实验过程
A.全加器实验
a.源代码
代码解释:
一个实体的vhdl文件,实体中主要执行数据流赋值操作。
b.逻辑图
c.波形仿真
波形设计解释:
结果分析及结论
符合输出结果,正确
B.串行加法器
a.源代码
第一个,触发器
第二个,存储器
第三个,全加器
第四个,顶层实体
代码解释:
四个实体的vhdl文件,第一个实体进行的是定义了一个触发器,第二个实体是定义了一个存储器,第三个实体是定义了一个全加器,第四个通过时钟信号,将原始数据存储在两个存储器中,通过重复调用全加器来实现四位二进制数加法
b.逻辑图
c.波形仿真
波形设计解释:
通过时钟信号clock,实现输入数据,以及对输入的原始数据的存储,并通过重复调用全加器对原始数据实现相加
结果分析及结论
第一个时钟周期,模拟开机,无操作
第二个时钟周期,将原始数据存入四位存储器
第三个时钟周期到第六个时钟周期,从四位数的最低位开始,对每位进行相加,并将结果导入
第一次相加为1+0,下位进位为0,产生进位为0,结果为1,输入,故第三个周期输出1000
第二次相加为1+1,下位进位为0,产生进位为1,结果为0,输入,故第四个周期输出0100
第三次相加为0+1,下位进位为1,产生进位为1,结果为0,输入,故第三个周期输出0010
第四次相加为1+1,下位进位为1,产生进位为1,结果为1,输入,故第四个周期输出1001
加法结束
C.并行加法器—串行进位
a.源代码
第一个文件
第二个文件
代码解释:
底层文件为一个一位全加器,顶层实体是通过对全加器的迭代电路实现四位的相加
b.逻辑图
c.波形仿真
波形设计解释:
对jiashu1和jiashu2进行相加
结果分析及结论:
对0110和0001进行相加,手动验算结果为0111,无进位,结果正确
D.并行加法器—快速进位
a.源代码
第一个文件
第二个文件
代码解释:
底层文件为一个一位全加器,顶层实体是通过对全加器的迭代电路实现四位的相加
b.逻辑图
c.波形仿真
波形设计解释:
对input_x和input_y进行相加
结果分析及结论:
对1100和0000进行相加,手动验算结果为1100,无进位,结果正确
D.并行加法器—快速进位
a.源代码
第一个文件(存储器)
第二个文件(取反器)
第三个文件(加法器)
第四个文件(减法器)
第五个文件(取和器)
第六个文件(逻辑右移)
第七个文件(逻辑左移)
第八个文件(顶层实体)
代码解释:
通过顶层实体对七个底层实体(功能块)进行调用,通过s决定调用的是哪个模块
b.逻辑图
c.波形仿真
波形设计解释:
通过r1和r2的值选择相应的a,b,c寄存器,并通过s选择执行特定的操作
结果分析及结论:
第一个时钟周期,将原始数据存入a,b,c三个寄存器中
第二个时钟周期,输入10010111,按照表格应执行a+c的操作,在下降沿执行,输出结果为r1=10010001,r2=10101011,有进位,正确
第三个时钟周期,输入01100110,按照表格应执行a-b的操作,在下降沿执行,输出结果为r1=01111001,r2=01101101,无进位,正确
第四个时钟周期,输入11101011,按照表格应执行b&c的操作,在下降沿执行,输出结果为r1=00101001,r2=10101011,无进位,正确
第五个时钟周期,输入01010100,按照表格应执行!a的操作,在下降沿执行,输出结果为r1=00011001,r2=XXXXXXXX,无进位,正确
第六个时钟周期,输入10101011,按照表格应执行b的逻辑右移操作,在下降沿执行,输出结果为r1=00110110,r2=XXXXXXXX,无进位,正确
第七个时钟周期,输入00110110,按照表格应执行a的逻辑左移操作,在下降沿执行,输出结果为r1=01010110,r2=10101011,无进位,正确
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158048.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...