设计8位双向移位寄存器电路
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1多功能双向移位寄存器 (1)
1.1基本工作原理 (1)
1.2 基本实现方案 (1)
2电路图设计 (2)
2.1 电路结构 (2)
2.2真值表 (3)
3移位寄存器的Verilog建模 (3)
3.1Verilog建模基础 (4)
3.2 8位双向移位寄存器Verilog描述 (5)
4程序仿真 (6)
5心得体会 (8)
参考文献 (10)
附录 (11)
摘要
使用硬件描述语言Verilog,在EDA工具QuartussII中,对8位双向移位寄存器进行行为级描述,根据设计语言进行功能时序仿真,验证设计的正确性与可行性。通过本基本设计熟悉QuartusII环境下的硬件描述操作流程,掌握基本的Verilog语法与编写风格。
关键字:Verilog QuartusII 移位寄存器
设计8位双向移位寄存器电路
1多功能双向移位寄存器
1.1基本工作原理
移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并
行/串行的转换、数值运算以及其他数据处理功能。但有时候需要对移位寄存器的数据流向加以控制,实现数据的双向移动,其中一个方向称为右移,另一个方向称为左移,这种移位寄存器就称为双向移位寄存器。
根据国家标准规定,逻辑图中的最低有效位(LSB)到最高有效位(MSB)的电路排列顺序应
从上到下,从左到右。因此定义移位寄存器中的数据从低位触发器移向高位为右移,移向低位为左移。
为了扩展逻辑功能和增加使用的灵活性,某些双向移位寄存器集成电路产品又附加了
并行输入、并行输出等功能。下图所示是上述几种工作模式的简化示意图。
并行输入 并行输出
右移串行输入(D IR 左移串行输出(D OL 右移串行输出(D OR ) D IL )
0123
图1-1 多功能移位寄存器工作模式简图
1.2 基本实现方案
图1-2所示是实现数据保持、右移、左移、并行置入和并行输出的一种电路方案。图
中的D 触发器m FF 是N 为移位寄存器中的第m 位触发器,在其数据输入端插入了一个4选1数据选择器m MUX ,用2位编码输入10S S 、控制m MUX ,来选择触发器输入信号m D 的来
源。当100S S ==时,选择该触发器本身输出的m Q ,次态为1m n n
m m Q D Q +==,使触发器保持
状态不变;当100,1S S ==时,触发器1m FF -的输出1m Q -被选中,故CP 脉冲上升沿到来时,
m FF 存入1m FF -此前的逻辑值,即1m 1n n m Q Q +-=,而1m+1n n
m Q Q +=,从而实现右移功能;类似地,
当101,0S S ==时,m MUX 选择1m Q +,实现左移功能;而当101S S ==时,则选中并行输入
数据m DI ,其次态1
n m m Q DI +=,从而完成并行数据的置入功能。上述四种操作概述于表1-1,
此外,在各触发器的输入端10~N Q Q -,可以得到N 位并行数据的输出。
图1-2 实现多功能双向移位寄存器的一种方案
控制信号 功能
控制信号
功能
S1 S0 S1 S0 0 0 保持 1 0 左移 0
1
右移 1
1
并行输入 2电路图设计
2.1 电路结构
根据上一节的移位寄存器的一种基本实现方案,可以设计出8位双向移位寄存器,完
整电路图入图2-1所示。
此电路由8个4选1数据选择器、8个带异步清零的D 触发器组成。所有的数据选择
器编码端10S S
分别对应地接在一起,同时选择D 触发器的信号数据来源。D 触发器时钟端CP 接一起,清零端CR 也同样接在一起,这样可以保证级联D 触发器的同步,和并行输出数据的清零。另,每个D 触发器的输出对应一位并行输入。Dsr 是右移串行数据输入端,Dsl 是左移串行数据输入端,分别接最低有效位对应的数据选择器和最高有效位对应的数据选择器。
图2-1 8位双向移位寄存器
2.2真值表
分析电路图,可得此8位双向移位寄存器的真值表,入下表所示:表2-1 8位双向移位寄存器真值表
3移位寄存器的Verilog建模
3.1Verilog建模基础
硬件描述语言Verilog HDL类似于高级程序设计语言(如C语言等),它是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示更复杂的数字逻辑系统所完成的逻辑功能(即行为)。人们还可以用HDL编写设计说明文档,这种文档易于存储和修改,适用于不同的设计人员之间进行技术交流,还能被计算机识别和处理,计算机对于HDL的处理包括两个方面:逻辑仿真和逻辑综合。
逻辑仿真是指用计算机仿真软件对数字逻辑电路的结构和行为进行预测,仿真器对HDL 描述进行解释,以文本形式或时序波形图形式给出电路的输出。在电路在实现之前,设计人员可以根据仿真结果初步判断电路的逻辑功能是否正确。在仿真期间,如果发现设计中存在错误,可以对HDL文件进行修改,直至满足设计要求为止。
在Verilog中,行为级描述主要使用由关键词initial或always定义的两种结构类型的语句。一个模块的内部可以包括多个initial或always语句,仿真时这些语句同时并行执行,即与他们在的模块内部排列无关,都从仿真的0时刻开始。
本设计采用always语句对8位双向移位寄存器进行行为级功能描述。Always本身是一个无限循环语句,即不停地循环执行其内部的过程语句,直到仿真过程结束。但用它来描述硬件电路的逻辑功能时,通常在always后面紧跟着循环控制条件,所以always语句的一般用法如下:
always @ (事件控制表达式)
begin
块内局部变量的定义;
过程赋值语句;
end
这里,“事件控制表达式”也称敏感事件表,即等待确定的事件发生或某一特定的条件变为“真”,它是执行后面过程赋值语句的条件。“过程赋值语句”左边的变量必须被定义成寄存器数据类型,右边变量可以是任意数据类型。begin和end将多条过程赋值语句包围起来,组成一个顺序执行语句块,块内的语句按照排列顺序依次执行,最后一条语句执行完后,执行挂起,然后always语句处于等待状态,等待下一个事件的发生。注意,begin 和end之间只有一条语句,且没有定义局部变量时,则关键词begin和end可以被省略。