数字电路实验(四)——寄存器、计数器及RAM

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

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

1、实验步骤:
A、指令计数器PC:

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

B、寄存器:

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

C、RAM:

1个bdf文件,用来定义顶层实体(LPM_RAM_IO芯片)
1个vhd文件,用来定义底层实体(8位寄存器)
1个mif文件,用来存储数据
1个vwf文件,用来进行波形仿真,将验证的波形输入
1、新建,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为【C:\Users\lenovo\Desktop\笔记\大二上\数字电路\实验课\实验四\RAM】)-【next】(设置文件名【gg】)-【next】(设置芯片类型为【cyclone-EP1CT144C8】)-【finish】
(2).新建:【file】-【new】(【design file-VHDL file】)-【OK】
(3)生成bsf文件
2、写好源代码,保存文件(gg.vhd)。
3、新建,编写mif。新建:【file】-【new】(【design file-mif file】)-【OK】
4、编写mif中的存储数据。
5、新建,编写bdf。新建:【file】-【new】(【design file-bdf file】)-【OK】
6、写好源代码,设置ram。点击ram芯片右上角处生成的表格,双击后会产生提示框,按照实验指导书中的样例依次修改ram芯片的各个属性,并将之前写的mif引入到ram芯片中。将先前生成的bsf文件引入到bdf中,按照实验指导书中的进行连接,保存文件(gg.bdf)。
7、编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译。编译结果有一个警告,文件编译成功。
8、波形仿真及验证。新建一个vector waveform file。按照程序所述插入inclock,ld,cs,dl,xl,address,address2,dio八个节点(inclock,ld,cs,dl,xl,address,address2为输入节点,dio为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置inclock,ld,cs,dl,xl,address,address2的输入波形…点击保存按钮保存。(操作为:点击name(如:inclock))-右击-【value】-【count】(如设置binary;start value=0;end value=1;count every=10ns),同理设置name ld,cs,dl,xl,address,address2(如0,1,5),保存)。然后【start simulation】,出name dio的输出图。
9、功能仿真,即没有延迟的仿真,仅用来检测思路是否正确。

D、寄存器组:

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

2、实验过程
A.指令计数器PC
a.源代码

在这里插入图片描述
代码解释:
通过中间变量s用来计数,在指令信号满足条件的时候执行累加操作或者赋值操作。
b.逻辑图
在这里插入图片描述
c.波形仿真
在这里插入图片描述
波形设计解释:
在这里插入图片描述
结果分析及结论
在第一个时钟周期进行读取操作,读取到的是pc的初始值“00000000”,体现在5ns处的下降沿。第二个周期进行写入操作,将外部输入的值“10010110”写入到pc中,体现在15ns处的下降沿,后续就寄存进行累加操作。
符合输出结果,正确

B.寄存器
a.源代码

在这里插入图片描述
代码解释:
通过定义一个中间变量a达到存储的目的,当且仅当ld控制信号为1且为时钟上升沿的时候,外部输入信号可以改变中间变量的值,以达到存储的目的
b.逻辑图
在这里插入图片描述
c.波形仿真
在这里插入图片描述
波形设计解释:
在这里插入图片描述
结果分析及结论:
第一个时钟周期进行写入操作,体现在5ns处的时钟上升沿,将输入数据10110011写入到寄存器中,第二个时钟周期不进行写入,输出不变。
C.RAM
a.源代码

寄存器的vhdl文件
在这里插入图片描述
Ram的bdf文件(顶层实体)
在这里插入图片描述
代码解释:
底层文件为一个8位寄存器,用来存储ram输出的值;顶层实体是调用LPM_RAM_IO芯片构成的bdf文件,通过ram来实现对存储文件mif文件的引用,来达到引用数据的目的。
b.逻辑图
在这里插入图片描述
c.波形仿真
在这里插入图片描述
波形设计解释:
在这里插入图片描述
结果分析及结论:
第一个周期不读不写,输出XXXXXXXX,
第二个周期进行读取操作,读取的地址是第00000000个元素,查表得00000001
第三个周期进行写入操作,将10110010写入第00000000个元素
第四个周期由于cs=0,无法进行读取操作,输出XXXXXXXX
第五个周期不读不写,输出XXXXXXXX
第六个周期进行写入操作,将10110010写入第00000001个元素
第七个周期进行读取操作,读取的地址是第00000000个元素,由于之前将10110010写入,现在为10110010

D.寄存器组
a.源代码

在这里插入图片描述
在这里插入图片描述
代码解释:
通过定义三个八位的中间变量和一个两位的中间变量,实现建立一个包含三个八位二进制寄存器和一个两位二进制地址寄存器的寄存器组
b.逻辑图
c.波形仿真
在这里插入图片描述
波形设计解释:
在这里插入图片描述
结果分析及结论:
第一个周期将输入值存入到a寄存器
第二个周期将输入值存入到b寄存器
第三个周期将输入值存入到c寄存器
第四个周期将输入值的最后两位作为地址存入到d寄存器
第五个周期,按照raa,rwba的指示,output_a输出a寄存器的值,output_b输出a寄存器的值
第六个周期,按照raa,rwba的指示,output_a输出a寄存器的值,output_b输出b寄存器的值
以此类推,结果正确。

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158060.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 上帝掷骰子吗–量子物理史话

    上帝掷骰子吗–量子物理史话  上帝掷骰子吗–量子物理史话    第一章黄金时代    一    我们的故事要从1887年的德国开始。位于莱茵河边的卡尔斯鲁厄是一座风景秀丽的城市,在它的城中心,矗立着著名的18世纪的宫殿。郁郁葱葱的森林和温暖的气候也使得这座小城成为了欧洲的一个旅游名胜。然而这些怡人的景色似乎没有分散海因里希?鲁道夫?赫兹(HeinrichRudolfHertz)的注意力:现在他正

  • 二分法注意点_二分法怎么用

    二分法注意点_二分法怎么用思路我相信对很多读者朋友来说,编写二分查找的算法代码属于玄学编程,虽然看起来很简单,就是会出错,要么会漏个等号,要么少加个1。不要气馁,因为二分查找其实并不简单。思路很简单,细节是魔鬼。本文以问答的形式,探究几个最常用的二分查找场景:寻找一个数、寻找左侧边界、寻找右侧边界。而且,我们就是要深入细节,比如不等号是否应该带等号,mid是否应该加一等等。分析这些细节的差异以及出现这些差异的原因,保证你能灵活准确地写出正确的二分查找算法。零、二分查找框架intbinarySearch(int[]

    2022年10月25日
  • 防止ASP Session丢失的方法[通俗易懂]

    防止ASP Session丢失的方法[通俗易懂]也许很多asp开发者都会遇到这样的情况:在会话期间(session)无故丢失session。换而言之,丢失了SessionID,同样session级的变量也会丢失。很多session丢失的原因是因为错误的程序或者是错误的虚拟目录结构。 SessionID的改变有下面几个原因。 原因一: Netscape的浏览器会认为”/App/user.asp”跟”/app/u

  • Android源码学习之环境搭建(Ubuntu下载Android源码)

    Android源码学习之环境搭建(Ubuntu下载Android源码)已经有一个多月没有看Android的知识了,之前在杭州时就买了邓凡平的《深入理解Android卷I》一直没来得及研究。后来因为公司要求,要为新的项目做准备,做各种业务的KT和技术的training,虽然新技术本身的难度不大,但是业务知识很是复杂,搞的头大,到现在终于有了一些头绪。趁现在有时间来研究下Android的源码。之前没有接触过Linux系统,我的本本现在用的是Windows系统,已经用习

  • linux卸载pycharm_彻底卸载pycharm

    linux卸载pycharm_彻底卸载pycharm1.查看配置信息位置首先在解压的pycharm-2020.2.1文件夹中,查看Install-Linux-tar.txt,找到配置信息的位置(下图中蓝色标识)。2.卸载安装文件首先找到安装文件所在的目录,cd切换至其目录,然后sudorm-rfpycharm-2020.2.13.删除配置信息依次cd切换至Pycharm2020.2的位置,然后rm删除掉该用户使用记录,即能实现完全卸载。…

  • 几个Python小案例,爱上Python编程!「建议收藏」

    Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python语法简洁清晰。语法简洁清晰,那么我们用少量的Python代码能做哪些有趣的东西?一、画爱心表白1、图形都是由一系列的点(X,Y)构成的曲线,由于X,Y满足一定的关系,所以我们就可以建立模型,建立表达式expression,当满足时,两个for循环(forXinrange;f…

发表回复

您的电子邮箱地址不会被公开。

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