设计8位双向移位寄存器电路.doc

上传人:枫** 文档编号:561561469 上传时间:2024-03-15 格式:DOC 页数:14 大小:271.51KB
返回 下载 相关 举报
设计8位双向移位寄存器电路.doc_第1页
第1页 / 共14页
设计8位双向移位寄存器电路.doc_第2页
第2页 / 共14页
设计8位双向移位寄存器电路.doc_第3页
第3页 / 共14页
设计8位双向移位寄存器电路.doc_第4页
第4页 / 共14页
设计8位双向移位寄存器电路.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《设计8位双向移位寄存器电路.doc》由会员分享,可在线阅读,更多相关《设计8位双向移位寄存器电路.doc(14页珍藏版)》请在金锄头文库上搜索。

1、武汉理工大学暑期能力拓展训练目录1多功能双向移位寄存器11.1基本工作原理11.2 基本实现方案12电路图设计22.1 电路结构22.2真值表33移位寄存器的Verilog建模33.1Verilog建模基础43.2 8位双向移位寄存器Verilog描述54程序仿真65心得体会8参考文献10附录11摘要使用硬件描述语言Verilog,在EDA工具QuartussII中,对8位双向移位寄存器进行行为级描述,根据设计语言进行功能时序仿真,验证设计的正确性与可行性。通过本基本设计熟悉QuartusII环境下的硬件描述操作流程,掌握基本的Verilog语法与编写风格。关键字:Verilog Quartu

2、sII 移位寄存器3设计8位双向移位寄存器电路1多功能双向移位寄存器1.1基本工作原理移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。但有时候需要对移位寄存器的数据流向加以控制,实现数据的双向移动,其中一个方向称为右移,另一个方向称为左移,这种移位寄存器就称为双向移位寄存器。根据国家标准规定,逻辑图中的最低有效位(LSB)到最高有效位(MSB)的电路排列顺序应从上到下,从左到右。因此定义移位寄存器中的数据从低位触发器移向高位为右移,移向低位为左移。为了扩展逻辑功能和增加使用的灵活性,某些双向移位寄存器集成电路产品又附加了

3、并行输入、并行输出等功能。下图所示是上述几种工作模式的简化示意图。图1-1 多功能移位寄存器工作模式简图1.2 基本实现方案图1-2所示是实现数据保持、右移、左移、并行置入和并行输出的一种电路方案。图中的D触发器是N为移位寄存器中的第m位触发器,在其数据输入端插入了一个4选1数据选择器,用2位编码输入控制,来选择触发器输入信号的来源。当时,选择该触发器本身输出的,次态为,使触发器保持状态不变;当时,触发器的输出被选中,故CP脉冲上升沿到来时,存入此前的逻辑值,即,而,从而实现右移功能;类似地,当时,选择,实现左移功能;而当时,则选中并行输入数据,其次态,从而完成并行数据的置入功能。上述四种操作

4、概述于表1-1,此外,在各触发器的输入端,可以得到N位并行数据的输出。图1-2 实现多功能双向移位寄存器的一种方案表1-1 图1-2的功能表控制信号功能控制信号功能S1S0S1S000保持10左移01右移11并行输入2电路图设计2.1 电路结构根据上一节的移位寄存器的一种基本实现方案,可以设计出8位双向移位寄存器,完整电路图入图2-1所示。此电路由8个4选1数据选择器、8个带异步清零的D触发器组成。所有的数据选择器编码端分别对应地接在一起,同时选择D触发器的信号数据来源。D触发器时钟端CP接一起,清零端也同样接在一起,这样可以保证级联D触发器的同步,和并行输出数据的清零。另,每个D触发器的输出

5、对应一位并行输入。Dsr是右移串行数据输入端,Dsl是左移串行数据输入端,分别接最低有效位对应的数据选择器和最高有效位对应的数据选择器。图2-1 8位双向移位寄存器2.2真值表分析电路图,可得此8位双向移位寄存器的真值表,入下表所示:表2-1 8位双向移位寄存器真值表输 入输 出清零控制信号串行输入时钟CP并行输入S1S0DsrDslLLHLLHLHLHLHHHHLLHHLHHHH注:表示CP脉冲上升沿之前瞬间的电平3移位寄存器的Verilog建模3.1Verilog建模基础硬件描述语言Verilog HDL类似于高级程序设计语言(如C语言等),它是一种以文本形式来描述数字系统硬件的结构和行为

6、的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示更复杂的数字逻辑系统所完成的逻辑功能(即行为)。人们还可以用HDL编写设计说明文档,这种文档易于存储和修改,适用于不同的设计人员之间进行技术交流,还能被计算机识别和处理,计算机对于HDL的处理包括两个方面:逻辑仿真和逻辑综合。逻辑仿真是指用计算机仿真软件对数字逻辑电路的结构和行为进行预测,仿真器对HDL描述进行解释,以文本形式或时序波形图形式给出电路的输出。在电路在实现之前,设计人员可以根据仿真结果初步判断电路的逻辑功能是否正确。在仿真期间,如果发现设计中存在错误,可以对HDL文件进行修改,直至满足设计要求为止。在Verilog中,行为级描

7、述主要使用由关键词initial或always定义的两种结构类型的语句。一个模块的内部可以包括多个initial或always语句,仿真时这些语句同时并行执行,即与他们在的模块内部排列无关,都从仿真的0时刻开始。本设计采用always语句对8位双向移位寄存器进行行为级功能描述。Always本身是一个无限循环语句,即不停地循环执行其内部的过程语句,直到仿真过程结束。但用它来描述硬件电路的逻辑功能时,通常在always后面紧跟着循环控制条件,所以always语句的一般用法如下:always (事件控制表达式)begin块内局部变量的定义;过程赋值语句;end这里,“事件控制表达式”也称敏感事件表,

8、即等待确定的事件发生或某一特定的条件变为“真”,它是执行后面过程赋值语句的条件。“过程赋值语句”左边的变量必须被定义成寄存器数据类型,右边变量可以是任意数据类型。begin和end将多条过程赋值语句包围起来,组成一个顺序执行语句块,块内的语句按照排列顺序依次执行,最后一条语句执行完后,执行挂起,然后always语句处于等待状态,等待下一个事件的发生。注意,begin和end之间只有一条语句,且没有定义局部变量时,则关键词begin和end可以被省略。在Verilog中,将逻辑电路的敏感事件分为两种类型:电平敏感事件和边沿触发事件。在组合电路中,输入信号的变化直接会导致输出信号的变化。时序电路中

9、的锁存器输出在使能信号为高电平时未亦随输入电平变化,这种对输入信号电平变化的响应称为电平敏感事件。而触发器状态的变化仅仅发生在时钟脉冲的上升沿或下降沿。Verilog中分别用关键词posedge(上升沿)和negedge(下降沿)进行说明,这就是边沿敏感事件。3.2 8位双向移位寄存器Verilog描述本设计通过行为级描述语句always描述了一个8位双向移位寄存器,它有两个选择输入端、两个串行数据输入端、8个并行数据输入端和8个并行数据输出端,完成的功能与图2-1的电路相同。它有5种功能:异步置零、同步置数、左移、右移和保持状态不变。当清零信号CR跳变到低电平时,寄存器的输出被异步置零;否则

10、,当CR=1时,与时钟信号有关的4种功能由case语句中的两个选择输入信号S1和S0决定(在case后面S1、S0被拼接成2位矢量)。设计程序如下:/Behavioral description of Universal shift registermodule shift (S1,S0,D,Dsl,Dsr,Q,CP,CR);input S1,S0;/Select inputsinput Dsl,Dsr;/serial data inputinput CP,CR;/Clock and Resetinput 7:0D;/Parallel Data inputoutput 7:0Q;/Regist

11、er ouputreg7:0Q;always (posedge CP or negedge CR)if(CR) Q = 8b00000000 ;elsecase (S1,S0)2b00:Q=Q;/No change2b01:Q=Q6:0,Dsr;/Shift right2b10:Q=Dsl,Q7:1;/Shift left2b11:Q=D;/Patallel load inputendcaseendmodule在程序中定义了一个模块(module)shift,在QuartusII中新建工程文件时,定义的顶层模块名需要与工程名保持一致,否则在编译时会出现错误。模块前端为基本输入输出口的设置。使用

12、了行为级描述语言always,后跟ifelse判断语句,在循环执行过程中来根据输入信号判断做出相应的动作。其中if(CR) Q=8b00000000 ;表示当CR信号为低电平时,(CR)则为1,此时将8为二进制数b00000000赋给Q,即实现移位寄存器的异步清零。Case语句类似于C语言中的case语句,同样根据判断条件来选择要执行的分支语句。在case中将S1和S0拼接为2位矢量,来共同决定判断结果。同样,移位由串行输入和7个触发器的输入拼接起来进行描述,如QQ6,Q6-Q5,,Q1-Q0),于是,完成将数据左移一位的操作。但是需要注意,上述程序中所注释的右移和左移方向与图2-1一致,而与

13、Verilog描述语句中的排列和移动方向正好相反。后者与一般技术机程序一致(即高位在左,低位在右)。4程序仿真在QuartuaII中建立shift工程,添加Verilog文件,编写源代码后,进行全编译。编译成功后,即可对定义的模块进行功能仿真。仿真步骤查看相关QuartusII书籍。本设计中,将所有定义的引脚添加入仿真环境中,对输入数据进行强制设定,运行后观察输出波形及其时序图。根据8位双向移位寄存器的真值表,仿真时,首先考察此移位寄存器的左移、右移、保持和并行输入的基本功能,然后再在串行输入端加入信号,观察移位寄存器的书序波形。图4-1为基本功能时序图。图4-1 基本功能时序图根据图4-1,

14、观察S1和S0信号,每个基本功能的仿真之前都先强制S1=S0=1,即实现并行输入功能,给输入D7:0设置初值,然后再下一个周期对S1、S0进行改变,观察输出Q的变化。程序中,语句always (posedge CP or negedge CR)表示当有CP的上升沿或CR的下降沿时触发,因此可以从仿真时序图验证,D和Q的数据改变都发生在CP信号的上升沿。在第一个CP周期上升沿之前,设定的D初值为128,上升沿到来,D是数据移入Q,Q值为128,Q的各位同并行输入D相同。第二个CP周期中,S1=S0=0,移位寄存器功能为保持,从时序图中验证知,Q的初值保持到第三个CP周期上升沿时刻。在第三个CP周期初,设定并行输入D为15,第四个周期为保持,第五个周期,设定S1S0=01,则寄存器实现右移,换算到计算机运算中即为左移一位,数值增大1倍。观察第五个周期CP上升沿之后,Q数值由15增大为30,Q的各位数值与D的各位数值比较,可以看出Q的D移位后的结果,此时串行输入的值为0,仿真验证正确。第六个周期保持数据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号