刘增辉-vhdl实验报告-实验6 双向移位寄存器

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

组别_____________________
同组同学_
黄红涛
成绩
实验日期:2011 年 11 月 13 日 一、实验名称:
双向移位寄存器
实验室名称______
二、实验目的与要求:
实验目的: 设计一个双向移位寄存器,理解移位寄存器的工作原理,掌握串入\并出端口控 制的描述方法。
实验要求:
通过 VHDL 编程,实现双向移位寄存器,要求有 1 个方向控制端、1 个时钟脉 冲输入、1 个异步清零端、1 个数据输入端以及 8 位的并行数据输出端,具体接口说 明如下图所示。
结束
六、源代码:
library ieee; use ieee.std_logic_1164.all; entity d_reg is port(clk,clr,dir,din:in std_logic; dout:out std_logic_vector(7 downto 0)); end d_reg; architecture behave of d_reg is begin process(clr,clk) variable a:std_logic_vector(7 downto 0); begin if(clr='1') then for i in 7 downto 0 loop a(i):='0'; end loop; elsif(clk'event and clk='1') then if(dir='0') then a(0):=a(1); a(1):=a(2); a(2):=a(3); a(3):=a(4); a(4):=a(5); a(5):=a(6); a(6):=a(7);
四、实验条件: 1. WindowsXP 操作系统 2. QuartusII EDA 开发系统 3. 杭州康芯 SOPC 硬件开发平台 五、实验原理:
根据要求设置个端口,键 7 为时钟控制端,键 8 为数据输入端,键 1 为方向 控制端,键 5 为异步清零。用 LED 发光阵列的 LED1~LED8 显示并行数据的输 出,依次相对应为 dout[7]……dout[0].根据模式 7 对应的开发系统 I/O 管脚映射 表以及 I/O 模式 7 示意图为每一个端口指定引脚。 软件调试: 1、 当设置为左移时,依次将 dout(6)的值送给 dout(7) ,dout(5)给 dout(6) , dout(0) 给 dout(1) ,然后将 din 给 dout(0) ; 2、 当设置为左移时,依次将 dout(7)的值送给 dout(6) ,dout(6)给 dout(5) , dout(1)给 dout(0) ,然后将 din 给 dout(7) ;据此,画出如下所示的算法流 程图: 硬件调试: 观察结果是否符合结果。在验证结果时,首先进行功能仿真,观察结果,调 试程序,再进行时序仿真。根据端口对应设置端口,观察 LED1~LED8 是否如 期亮。 改变方向控制端即键一或者键 5 异步清零端或者送入时钟控制端即多次按 键 7,观察结果。
八、讨论和回答问题及体会:
1、本实验用到了LOOP语句。LOOP语句能使程序有规则的循环,循环的次数 受迭代算法的控制。在VHDL语言中,LOOP语句可以和for循环变量、while条件 这两种语句格式一块使用。 2、在程序的编写过程中,我们应该首先分析各个端口的优先级顺序,这一点就 可以利用 if 语句首先进行判断。这一点是用 VHDL 语言进行设计数字逻辑电路 的共同点,是我们学习过程中必须掌握的内容。 3、在实验中,打开 QuartusII 软件,建立一个新的工程时在写顶层实体名时,实 体名、文件名必须和建立工程时所设定的顶层实体名相同,这样才不会出错,这 一点是我们使用 QuartusII 软件时经常犯的错误之一。 4、实验中,需要对每一个端口指定器件的引脚,在引脚指定过程中需要参照开 发系统所给的 I/O 端口映射表,通过开发平台上每个 I/O 器件附近的 I/O 编号, 在映射表中找到相应的引脚名,填入相应的对话框。这一应该特别小心,也是实 验最后成败的最为关键的一步。 5、在实验中所遇到的还有一个问题就是模式的选择,在此实验中,应该选择模 式 0。这些都是实验中的小问题,在实验中只有养成严谨科学的态度和作风,认 真注意各个实验细节,才能保证实验的最后成功。 6、通过这次实验,我接触了使用 VHDL 编程的一些基本技术和方法,初步掌握 QuartusII 软件的使用方法以及硬件编程下载的基本技能,对以后 EDA 的继续学 习奠定了基础。
clk:移位寄存器时钟脉冲输入,上升沿有效; din:串行数据输入端; clr:异步清零信号,高电平有效; dir: 方向控制端, 要求低电平左移, 高电平右移; dout[7..0]:8 位数据并行输出端;
首先在QuartusII上进行功能和时序仿真, 之后通过器件及其端口配置下载程序到 SOPC开发平台中。在硬件实现中,要求: 1. 用实验平台的按键实现时钟控制(clk)、方向控制(dir)、清零 (clr)以及数据输(din):
七、实验结果与分析:
创建波形文件,进行功能仿真:
进行时序仿真:
长安大学 电子科学与技术系 刘增辉
实验结果照片
以上是当输入为“1”,并且方向设置为“右”时,三次时钟脉冲控制之后的数据移位情况。
输入为“1”时,再经过两个时钟脉冲移位之后的移位情况。
长安大学 电子科学与技术系 刘增辉
再把方向设置为“左”时,两次时钟脉冲控制之后的数据移位情况。
2. 用实验平台的 LED 发光阵列的 LED1~LED8 显示并行数据的输出。
长安大学 电子科学与技术系 刘增辉
三、实验内容:
实验步骤:
1. 打开 QuartusII 软件,建立一个新的工程: 1) 单击菜单 File\New Project Wizard… 2) 输入工程的路径、工程名以及顶层实体名。由于我们建立的是一个空的项目, 所以没有包含已有文件,单击 Next>继续。 4) 设置我们的器件信息: 5) 单击 Next>, 指定第三方工具: 这里我们不指定第三方 EDA 工具, 单击 Next> 后结束工程建立。 2. 建立 VHDL 文件: 1) 单击 File\New 菜单项,选择弹出窗口中的 VHDL File 项,单击 OK 按钮以建 立打开空的 VHDL 文件。 2)在编辑窗口中输入 VHDL 源文件并保存,注意实体名、文件名必须和建立工 程时所设定的顶层实体名相同。 3) 编译工程 单击 Processing\Start Compilation 开始编译,编译过程中可能会显示若干出错消 息,参考提示原因对程序进行修改直到编译完全成功为止。 3. 建立矢量波形文件 1) 单击 File\New 命令,在弹出的对话框中选择 OtheБайду номын сангаас Files 页面中的 Vector Waveform File 项,打开矢量波形文件编辑窗口: 2) 双击窗口左边空白区域,打开 Insert Node or Bus 对话框: 3) 单击 Node Finder…按钮,打开以下对话框,选择 Filter 下拉列表中的 Pins: all,并点击 List 按酒以列出所有的端口,通过>>按钮把这些端口加入到右面的 窗口中,单击 OK 完成端口的添加。回到波形编辑窗口,对所有输入端口设置输 入波形, 具体可以通过左边的工具栏,或通过对信号单击鼠标右键的弹出式菜单 中完成操作,最后保存次波形文件。 4. 进行功能仿真 1) 单击 Assignments\Settings…,在弹出对话框中将 Simulation mode 设置为 Functional,即功能仿真。指定仿真波形文件后单击 OK 完成设置。 2) 单击 Processing\Generate Functional Simulation Netlist 以获得功能仿真网络表。 3) 单击 Processing\Start Simulation 进入仿真页面。 5. 进行时序仿真 如果功能仿真无误,可进入时序仿真,时序仿真是增加了相关延迟的仿真,是最 接近实际情况的仿真。 1) 单击 Assignments\Settings…,在弹出对话框中将 Simulation mode 设置为
长安大学 电子科学与技术系 刘增辉
Timing,即时序仿真。指定仿真波形文件后单击 OK 完成设置。 2) 单击 Processing\Start Simulation 进入仿真页面。 6. 器件的下载 1) 指定器件引脚: 单击 Assignments\Assignment Editor,打开引脚分配编辑框。为每一个端口指定 器件的引脚,在引脚指定过程中需要参照开发系统所给的 I/O 端口映射表,通过 开发平台上每个 I/O 器件附近的 I/O 编号,在映射表中找到相应的引脚名,填入 对话框即可。 2) 连接下载线 通过 USB-blaster 下载电缆连接 PC 机和开发平台,如果首次使用下载电缆,此 时操作系统会提示安装驱动程序,此 USB 设备的驱动处于 QuartusII 安装目录中 的\drivers\usb-blaster 中。 3) 单击 Tool\Programmer 打开下载窗口,通过对话框中的 Hardware Setup 按钮, 选择下载设备:USB-Blaster,点击 Start 完成下载。
长安大学 电子科学与技术系 刘增辉
开始
Clr='1'? N N
Y
clk'event and clk='1'? Y Y dir='0'? N
for i in 7 downto 0 loop a(i):='0';
a(i):=a(i+1)
a(i+1):=a(i)
for i in 7 downto 0 loop dout(i)<=a(i);
长安大学 电子科学与技术系 刘增辉
a(7):=din; else a(7):=a(6); a(6):=a(5); a(5):=a(4); a(4):=a(3); a(3):=a(2); a(2):=a(1); a(1):=a(0); a(0):=din; end if; for i in 7 downto 0 loop dout(i)<=a(i); end loop; end if; end process; end behave;
长安大学 电子科学与技术系 刘增辉
学生实验报告
实 验 课 名 称:VHDL 硬件描述语言 实验项目名称:双向移位寄存器 专 业 名 称:电子科学与技术 班 学 级:32050801 号:3205080135
学 生 姓 名:刘增辉 教 师 姓 名:程鸿亮
_2010__年__11__月__13__日
长安大学 电子科学与技术系 刘增辉
相关文档
最新文档