32位移双向位寄存器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA课程设计报告题目:32位移位寄存器设计
专业班级:电气工程及其自动化101 姓名:
完成日期:2012年12月 30 日
设计要求
双向移位寄存器
设计要求:完成以下功能特性的双向32 位移位寄存器。同
时要求有使能端,用1602 显示。
32位移位寄存器设计
摘要:移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/
串行的转换、数值运算以及其他数据处理功能。在本设计中 使用硬件描述语言Verilog,在EDA
工具QuartussII中,设计32位双向移位寄存器硬件电路,根据设计语言进行功能时序仿真,验证设计的正确性与可行性。
关键词:Verilog QuartusII 移位寄存器
1 引言
随着社会的发展,科学技术也在不断的进步。特别是计算机产业,可以说是日新月异,移位寄
存器作为计算机的一个重要部件,从先前的只能做简单的左移或右移功能的寄存器到现在广泛应用
的具有寄存代码、实现数据的串行-并行转换、数据运算和数据处理功能的移位寄存器。移位寄存器
正在向着功能强,体积小,重量轻等方向不断发展,本设计主要介绍的是一个基于超高速硬件描述
语言Verilog对移位寄存器进行编程实现。现在各种装饰用的流水灯、广告彩灯、宣传画越来越多
的出现在人民的生活当中,这些装饰控制设备多数要用移位寄存器来实现。在计算机中常要求寄存
器有移位功能。如在进行乘法时,要求将部分积右移;在将并行传送的数转换成串行数时也需要移
位。因此,移位寄存器的设计是必要的。
2 总体设计方案
移位寄存器的功能即是对每一个上升沿到来时,并且寄存器使能是时,对输入按照移位模式控
制信号的要求实现输出的左移和右移。首先,要完成双向的32位移位寄存器,就首先必须要实现8
位移位寄存器作为基础。其次,在4个8个移位寄存器的基础上达到32位移位寄存器的功能。第一要有模式控制输入,来控制移位寄存器的移位方向;第二,有使能端,即在什么情况下移位寄存器才可以正常工作,才可以实现模式控制,什么时候置数,什么时候移位,是左移还是右移,这就要求使能是模式控制输入的前提;然后是脉冲控制信号,由要求可知,移位寄存器是在上升沿触发的,即在每一次上升沿到来时,移位寄存器使输入按照模式控制的要求向左或向右移一位;最后输入和输出,都要用到32位并行输入和输出。
本设计用一个8位移位寄存器,再增加一些电路,如4个8位锁存器等,设计成为一个能为32位二进制数进行不同方式移位的移位寄存器。先建立底层模块,再自底向上进行实验调试仿真。
2.1 设计思路
2.1.1 8位移位寄存器功能的实现
移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。在本设计中定义移位寄存器中的数据从低位触发器移向高位为右移,移向低位为左移。由设计要求可知,要实现8位的双向移位寄存器,并且还有使能端。我们可令CLK为移位时钟信号,D为8位并行预置数据端口,CO为进位输入,CN为进位输出,LOAD 为并行数据预置使能信号,Q为串行输出端口,LEFT_RIGHT为左/右移控制数。此移位寄存器的工作方式是:当CLK得上升沿到来时,过程被启动,如果这时预置使能端LOAD为低电平,且移位模式控制数LEFT_RIGHT为1时,则进位输入CO被移入最低位,最高位被移入寄存器中,进而移到进位输出CN,低7位依次左移1位;如果移位模式控制数LEFT_RIGHT为0时,则CO被移入最高位,最低位被移入寄存器中,进而移到进位输出CN,高7位依次右移1位。但如果这时预置使能端LOAD为高电平时,则将预置端口D中数据并行送往移位寄存器。最后在8位的基础上来实现32位的更高功能。模块程序见附录。所生成的RTL图如下图1,仿真图如图2。
图1
图2
2.1.2 8位锁存器功能的实现
通过8位锁存器实现数据输入缓存,连通数据输入与分配到四个八位寄存器。其RTL图如图3,仿真图如图4。
图3
图4
2.1.3 32位移位寄存器功能的实现
一个Verilog模块对应一个硬件电路功能实体器件。如果要将这些实体器件连接起来构成一个完整的系统,就需要一个总的模块将所有涉及的子模块连接起来,这个总的模块所对应的Verilog 设计文件就成为顶层文件,或顶层模块。为了达到连接底层文件达到更高层次的电路设计结构,文件中使用了例化语句,用wire定义了网线型变量,用作底层文件的连线。Verilog中元件例化的语句结构比较简单,一般格式如下:
<模块文件名> <例化文件名> ( . 例化元件端口(例化元件外接端口名),…);
总体图中用到了4个锁存器和4个8位移位寄存器。相同的元件承担不同的任务,所以必须用不同的名字标注这些器件即元件名。本设计中分别用u1,u3,u5,u7 表示4个锁存器,用u2,u4,u6,u8表示4个8位移位寄存器。具体例化语句如:
SUOCUN U1(.D(DB[7:0]),.CLK(CLK),.Q(E));
SUOCUN 为待调用的元件名,它就是存盘过的。而u1是用户在此特定情况下调用元件SUOCUN而取的名字,即例化名。CLK(CLK)中的括号内是锁存器内部时钟,括号外是外部时钟,表示内部时钟与外部时钟相连。总的程序见附录。生成的RTL图和仿真图见下图5,6:
图5
图6
2.1.4 整体设计
首先,当脉冲上升沿到来,LOAD=0使能时,确定移位模式控制数,若left_right=0,则执行begin REG[7]<=CO;REG[6:0]<=REG[7:1];CY<=REG[0];end。此语句表明:一个时钟周期后将上一时钟周期移位寄存器中的最低位放入寄存器的最高位,且高7位二进制数,即以当前值 REG[7:1]更新