前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数字电路实验(三)——加法器、运算器

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

作者头像
全栈程序员站长
发布2022-09-14 10:19:51
9740
发布2022-09-14 10:19:51
举报
文章被收录于专栏:全栈程序员必看

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

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.cn/158048.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年7月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档