数字电路实验(一)——译码器

数字电路实验(一)——译码器1、实验步骤:异或门过程1、 新建,编写源代码。(1).选择保存项和芯片类型:【File】-【newprojectwizard】-【next】(设置文件路径+设置projectname为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验一\异或门】)-【next】(设置文件名【gg】)-【next】(设置芯片类型为【cyclone-EP1CT144C…

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

1、实验步骤:
异或门过程

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。按照程序所述插入a,b,c三个节点(a、b为输入节点,c为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置a,b的输入波形…点击保存按钮保存。(操作为:点击name(如:en))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name b(如0,1,5),保存)。然后【start simulation】,出name C的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。

以上是异或门过程,下面是三八译码器过程

1、新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验一\指令译码器5(success)】)-【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。按照程序所述插入en,ir,our三个节点(en、ir为输入节点,our为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置en,ir的输入波形…点击保存按钮保存。(操作为:点击name(如:en))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name ir(如000,1,10),保存)。然后【start simulation】,出name C的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。

以上是三八译码器的过程,以下为指令译码器的过程

1、新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验一\指令译码器5(success)】)-【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。按照程序所述插入en,a, mova,movb,movc,add,sub,and0,not0,shr,shl,jmp,jz,jc,in0,out0,nop,halt十八个节点(en、a为输入节点,mova,movb,movc,add,sub,and0,not0,shr,shl,jmp,jz,jc,in0,out0,nop,halt为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置en,a的输入波形…点击保存按钮保存。(操作为:点击name(如:en))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name ir(如0000000,1,10),保存)。然后【start simulation】,出name C的输出图。
5、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。

2、实验过程

a)异或门源代码如图(VHDL设计)
在这里插入图片描述
三八译码器源代码如图(VHDL设计)
在这里插入图片描述
指令译码器源代码如图(VHDL设计)
在这里插入图片描述
b)异或门原理图
在这里插入图片描述
三八译码器原理图
在这里插入图片描述
指令译码器原理图
在这里插入图片描述
c)编译、调试过程
编译、调试过程中没有太多的错误。但代码优化了好几次。
d)结果分析及结论
由于编译、调试过程中没有出现太多的错误,所以结果应该是:
异或门:
输入00时输出0
输入01时输出1
输入10时输出1
输入11时输出0
三八译码器:
当使能为1时,ir:
输入000时输出10000000,输入100时输出00001000
输入001时输出01000000,输入101时输出00000100
输入010时输出00100000,输入110时输出00000010
输入011时输出00010000,输入111时输出00000001
当使能为0时,恒输出00000000
指令译码器:
当使能为1时,ir为
0011 R1 R2输出mova=1其他为0
0011 11 R2输出movb=1其他为0
0011 R1 11输出movc=1其他为0
1001 R1 R2输出add=1其他为0
0110 R1 R2输出sub=1其他为0
1110 R1 R2输出and0=1其他为0
0101 R1 XX输出not0=1其他为0
1010 R1 00输出shr=1其他为0
1010 R1 11输出shl=1其他为0
0001 00 00输出jmp=1其他为0
0001 00 01输出jz=1其他为0
0001 00 10输出jc=1其他为0
0010 R1 XX输出in0=1其他为0
0100 R1 XX输出out0=1其他为0
0111 00 00输出nop=1其他为0
1000 00 00输出halt=1其他为0
当使能为0时,恒输出0

3、波形仿真
异或门

a)波形仿真过程(详见实验步骤)
在这里插入图片描述
b)波形仿真波形图
在这里插入图片描述
c)结果分析及结论
0-5ns:输入端00,输出结果为0,正确
5-10ns:输入端01,输出结果为1,正确
10-15ns:输入端10,输出结果为1,正确
15-20ns:输入端11,输出结果为0,正确
代码正确

三八译码器

a)波形仿真过程(详见实验步骤)
在这里插入图片描述
b)波形仿真波形图
在这里插入图片描述
c)结果分析及结论
0-20ns:使能端en为0,输出结果为00000000,正确
20-40ns:使能端en为1,输出结果为实验过程中结果分析,正确
代码正确

指令译码器

a)波形仿真过程(详见实验步骤)
在这里插入图片描述
b)波形仿真波形图
在这里插入图片描述
c)结果分析及结论
0-128ns:使能端en为0,输出结果全为0,正确
128-256ns:使能端en为1,输出结果符合实验过程中结果分析,正确
代码正确

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

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

(0)
上一篇 2022年7月12日 下午12:16
下一篇 2022年7月12日 下午12:16


相关推荐

  • 一看就懂:cron 表达式

    一看就懂:cron 表达式前言 不知道你在玩游戏的时候是否发现过以下情况 1 玩某些游戏的时候 发现他的排行榜并不是时时更新的 而是每半个小时 或者一个小时更新一次 2 又比如很火的王者荣耀手游 它的日常任务 都是每天 5 点进行更新 那么 这些时间控制 到底是由谁控制得如此精准呢 原来 这些都是 corn 表达式的功劳 1 什么是 cron 表达式 在了解之前 我们先举几个例子 看看 corn 表

    2026年3月20日
    1
  • 时钟周期,机器周期,指令周期的区别是什么_紫外分光吸光度大于1

    时钟周期,机器周期,指令周期的区别是什么_紫外分光吸光度大于1时钟周期     时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。    在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。     8051单片机把一个时钟

    2022年10月13日
    4
  • influxdb基础

    influxdb基础基本概念与传统数据库名词比较 influxDB 中的名词传统数据库中的概念 database 数据库 neasurement 数据库中的表 points 表里的一行数据 InfluxDB 中独有的一些念概 Point 由时间戳 time 数据 field 标签 tags 组成 Point 属性传统数据库中的概念 time 每个数据记录时间 是数据库中的主索引 会自动生成 field 各种记录值 无索引 tags 各种有索引的属性

    2026年3月19日
    2
  • vue如何引用js文件_html转化为vue组件

    vue如何引用js文件_html转化为vue组件VUE项目中引入JS文件的几种方法在开发Vue项目的时候,有时需要使用一些非ES6格式的没有export的js库,可以有如下方法实现:1.在index.html页面使用script标签引入当然也可以使用cdn的地址。这样引入后的内容是全局的,可以在所有地方使用。Map2.在main.js中使用window.moduleName使用也可以放入Vue.prototype中,这样组件内都可以使用。va…

    2022年10月8日
    2
  • docker restart=always_MySQL having

    docker restart=always_MySQL having在面试中关于多线程同步,你必须要思考的问题一文中,我们知道glibc的pthread_cond_timedwait底层是用linuxfutex机制实现的。理想的同步机制应该是没有锁冲突时在用户态利用原子指令就解决问题,而需要挂起等待时再使用内核提供的系统调用进行睡眠与唤醒。换句话说,在用户态的自旋失败时,能不能让进程挂起,由持有锁的线程释放锁时将其唤醒?如果你没有较深入地考虑过这个问题,很可能…

    2026年2月9日
    5
  • js 获取select的值

    js 获取select的值html selectid class id name class id optionvalue 0 0 optionvalue 1 1 optionvalue 2 2 第一种方法 varclass id class id val 第二种方法 vart d optionvalue 2 optionvalue 1 optionvalue 0 selectid class id name class id

    2026年3月16日
    3

发表回复

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

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