VHDL实验双向移位寄存器(完整版)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VHDL实验双向移位寄存器(完整版)

实验课名称:VHDL硬件描述语言实验项目名称:双向移位寄存器专业名称:电子科学与技术班级:电科二班

学号:***** 学生姓名:****

教师姓名:****

__2010__年_11_月_14_日

组别_____________________同组同学_______________________ 实验日期

_____年___月___日实验室名称______________成绩_____

一、实验名称:双向移位寄存器

二、实验目的与要求:

实验目的:设计一个双向移位寄存器,理解移位寄存器的工作原理,掌握

串入\并出端口控制的描述方法。

实验要求:通过VHDL编程,实现双向移位寄存器,要求有1个方向控制端、1个时钟脉冲输入、1个异步清零端、1个数据输入端以及8位的并行数据输出端,具体接口说明如下图所示。 clk:移位寄存器时钟脉冲输入,上升

沿有效;

din:串行数据输入端;

clr:异步清零信号,高电平有效;

dir:方向控制端,要求低电平左移,

高电平右移;

dout[7..0]:8位数据并行输出端;

首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载程序

到SOPC开发平台中。在硬件实现中,要求:

1. 用实验平台的按键实现时钟控制(clk)、方向控制(dir)、清零(clr)以及数据

输入(din):

端口名按键名功能

clk 键7 时钟控制

din 键8 数据输入

clr 键1 异步清零

dir 键5 方向控制

2. 用实验平台的LED发光阵列的LED1,LED8显示并行数据的输出。

三、实验内容:

, 新建工程:

1、打开Quartus,新建工程,选择好路径,工程顶层名为d_reg ;

2、新建工程,如果包含已编好的文件则可以添加,如果无则可以略过 ;

3、选择我们的器件信息:型号为:EP2C36F484C8

4、单击Next>,指定第三方工具,这里我们不指定第三方EDA工具,单击Next>后结

束工程建立。

, 建立编译VHDL文件:

1单击File\New菜单项,选择弹出窗口中的VHDL File项,单击OK按钮以建立打

开空的VHDL文件,并以工程顶层文件名保存。

2、输入源代码完后单击Processing\Start Compilation开始编译,并修改其中的

错误直到没有为止。

的错误直到没有为止。

, 建立矢量波形文件

1、单击File\New命令,选择其中的Vector Waveform File项,点击OK建立空的

波形文件,打开矢量波形文件编辑窗口;

2双击窗口左边空白区域,打开Insert Node or Bus对话框;

1、单击Node Finder…按钮,打开以下对话框,选择Filter下拉列表中的Pins:

all,并点击List按酒以列出所有的端口,通过>>按钮把这些端口加入到右面的窗口中,单击OK完成端口的添加;

2、回到波形编辑窗口,对所有输入端口设置输入波形,具体可以通过左边的工

具栏,或通过对信号单击鼠标右键的弹出式菜单中完成操作,最后保存次波形文件。

, 进行仿真:

1、单击Assignments\Settings ,Simulation mode设置为Functional,即功能

仿真。指定仿真波形文件后单击OK完成设置;

2、单击Processing\Generate Functional Simulation Netlist以获得功能仿

真网络表;

3、单击Processing\Start Simulation完成功能仿真。

4、如果功能仿真无误后进行时序仿真:单击Assignments\Settings,在弹出对话框中Simulation mode设置为Timing,即时序仿真。指定仿真波形文件后单击OK完

成设置。

5、单击Processing\Start Simulation,完成时序仿真。

6、如果时序仿真也没错即可下载工作了。

四、实验条件:

1. WindowsXP操作系统

2. QuartusII EDA开发系统

3. 杭州康芯SOPC硬件开发平台

五、实验原理:

本实验依然带有异步清零功能,所以用if实现优先级最高,当clr为高电

平时异步清零,当clr为低电平时实现移位功能;此时利用if的嵌套功能,用dir端控制移位的方向,当dir为低电平时左移,高电平时右移。

开始

实现清零功能clr=‘1’?

非循环右移dir=’’0’?

非循环左移

关于移位可以运用&级联这个运算符,这样程序可以显得简洁,就不用其他

像循环之类的方法了。

六、源代码:

library ieee;

use ieee.std_logic_1164.all;

entity d_reg is

port(clk,din,clr,dir:in std_logic;

dout:buffer std_logic_vector(7 downto 0));

end entity;

architecture wen of d_reg is

begin

process(clk,din,clr,dir)

begin

if(clr='1')then

dout<="00000000";

elsif(clk'event and clk='1')then

if(dir='0')then

dout<=dout(6 downto 0)&din;

相关文档
最新文档