数字电路实验(三)——加法器、运算器

数字电路实验(三)——加法器、运算器1、实验步骤:A全加器:1个vhd文件,用来定义顶层实体1个vwf文件,用来进行波形仿真,将验证的波形输入1、新建,编写源代码。(1).选择保存项和芯片类型:【File】-【newprojectwizard】-【next】(设置文件路径+设置projectname为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验三\全加器】)-【next】(设…

大家好,又见面了,我是你们的朋友全栈君。

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,无进位,正确

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158048.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Redis面试总结

    Redis面试总结

    2021年10月27日
    40
  • lvs环境搭建

    lvs环境搭建参考:https://blog.csdn.net/Ki8Qzvka6Gz4n450m/article/details/79119665http://www.cnblogs.com/klb561/p/9215667.html补充了设置vip的方法以及一些解释性东西。 负载均衡集群是loadbalance集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、…

    2022年7月23日
    7
  • vue的路由懒加载_vue图片懒加载

    vue的路由懒加载_vue图片懒加载vue打包后的js文件越来越大,这会是影响加载时间的重要因数。当构建的项目比较大的时候,懒加载可以分割代码块,提高页面的初始加载效率。下面是几种常见vue路由懒加载的方法。

    2022年10月6日
    3
  • smtp邮件服务器的作用,smtp服务器是什么意思(smtp服务器作用及使用指南)[通俗易懂]

    smtp邮件服务器的作用,smtp服务器是什么意思(smtp服务器作用及使用指南)[通俗易懂]smtp服务器是什么意思SMTP的全称是“SimpleMailTransferProtocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地,SMTP服务器就是遵循SMTP协议的发送邮件服务器,不同邮件服务商均有对应的smtp服务器地址,并且这个地址会提供给大家…

    2022年9月28日
    2
  • 本地访问服务器上的wamp

    本地访问服务器上的wamp

    2021年9月23日
    42
  • MATLAB分段函数及应用实例

    MATLAB分段函数及应用实例简单实例:用matlab画分段函数        当x<0时 y=5*sin(x);        当x>=0且x<=5时y=x^2;        当x>5时y=(8-x)^2+16.x=-5:0.001:10;y=5*sin(x).*(x<0)+x.^2.*(x>=0&x<=5)+((8-x).^2+16).*(x>5);p…

    2022年6月7日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号