实验1 双向移位寄存器的设计

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

实验1 双向移位寄存器的设计

一 、实验目的

1.学习时序逻辑电路;

2.学习寄存器的原理; 二 、实验内容

1.编写一个清零输入,可以双向移位的寄存器的Verilog 代码并仿真,编译下载验证。 三、 实验要求

1.根据参考内容,用Verilog HDL 语言进行双向移位寄存器的设计。

2.用Quartus II 或 Modelsim 对其进行功能或时序进行波形仿真验证;

3.下载到FPGA 开发板验证; 四、 实验环境

Quartus prime 五、 实验原理

移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。但有时候需要对移位寄存器的数据流向加以控制,实现数据的双向移动,其中一个方向称为右移,另一个方向称为左移,这种移位寄存器就称为双向移位寄存器。

根据国家标准规定,逻辑图中的最低有效位(LSB)到最高有效位(MSB)的电路排列顺序应从上到下,从左到右。因此定义移位寄存器中的数据从低位触发器移向高位为右移,移向低位为左移。

为了扩展逻辑功能和增加使用的灵活性,某些双向移位寄存器集成电路产品又附加了并行输入、并行输出等功能。下图所示是上述几种工作模式的简化示意图。

并行输入 并行输出

右移串行输入(D IR 左移串行输出(D OL 右移串行输出(D OR ) D IL )

0123

图1 双向移位寄存器工作模式简图

表1 双向移位寄存器功能表

表2 8位双向移位寄存器真值表

六、实验步骤

1.打开Quartus prime软件,进入系统页面后点击“New Project Wizard”新建一个工程;

2.创建工程后,在工程中再新建一个文件。在这个文件中编写实验程序,其步骤是选择菜单File-New-Verilog HDL file

3. 编译前对整个工程进行参数设置。首先在工程名称上右键,单击“Settings”,选择“Simulation”,进行一系列的参数设置。

4. 对工程进行编译、仿真、验证。

七、实验程序(或者电路图)

module shift (S1,S0,D,Dsl,Dsr,Q,CP,CR);

input S1,S0; //Select inputs

input Dsl,Dsr; //serial data input

input CP,CR; //Clock and Reset

input [7:0]D; //Parallel Data input

output [7:0]Q; //Register ouput

reg[7:0]Q;

always @(posedge CP or negedge CR)

if(~CR) Q <= 8'b00000000 ;

else

case ({S1,S0})

2'b00:Q<=Q; //No change

2'b01:Q<={Q[6:0],Dsr}; //Shift right

2'b10:Q<={Dsl,Q[7:1]}; //Shift left

2'b11:Q<=D; //Patallel load input endcase

endmodule

八、实验结果

图1 RTL门级建模仿真

图2 波形图仿真

九、实验结果讨论

主要观察第五个周期,Q初值为15,寄存器功能设定为右移,右移串行输入为1,CP上升沿到来后,Q值增大为31,即增大到2倍后右在低位移入1。同样在第九个周期中,寄存器设定功能为左移,CP上升沿到来后,原有的值18变为9,但是左移串行输入为1,从高位引入1,即为128+9=137,功能仿真结果正确。

相关文档
最新文档