- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数电实验报告PPT
;;图1-2 实现多功能双向移位寄存器的一种方案
;2电路图设计
2.1 电路结构
根据上一节的移位寄存器的一种基本实现方案,可以设计出8位双向移位寄存器,完整电路图入图2-1所示。
此电路由8个4选1数据选择器、8个带异步清零的D触发器组成。所有的数据选择器编码端 分别对应地接在一起,同时选择D触发器的信号数据来源。D触发器时钟端CP接一起,清零端 也同样接在一起,这样可以保证级联D触发器的同步,和并行输出数据的清零。另,每个D触发器的输出对应一位并行输入。Dsr是右移串行数据输入端,Dsl是左移串行数据输入端,分别接最低有效位对应的数据选择器和最高有效位对应的数据选择器。
;2.2 真值表
分析电路图,可得此8位双向移位寄存器的真值表,如表2所示:; 本设计通过行为级描述语句always描述了一个8位双向移位寄存器,它有两个选择输入端、两个串行数据输入端、8个并行数据输入端和8个并行数据输出端,完成的功能与图3的电路相同。它有5种功能:异步置零、同步置数、左移、右移和保持状态不变。当清零信号CR跳变到低电平时,寄存器的输出被异步置零;否则,当CR=1时,与时钟信号有关的4种功能由case语句中的两个选择输入信号S1和S0决定(在case后面S1、S0被拼接成2位矢量)。
;设计程序如下:
//Behavioral description of Universal shift register
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;
else
case ({S1,S0})
2b00:Q=Q; //No change
2b01:Q={Q[6:0],Dsr}; //Shift right
2b10:Q={Dsl,Q[7:1]}; //Shift left
2b11:Q=D; //Patallel load input
endcase
endmodule
;在程序中定义了一个模块(module)shift,在QuartusII中新建工程文件时,定义的顶层模块名需要与工程名保持一致,否则在编译时会出现错误。模块前端为基本输入输出口的设置。
使用了行为级描述语言always,后跟if……else……判断语句,在循环执行过程中来根据输入信号判断做出相应的动作。其中if(~CR) Q=8’;表示当CR信号为低电平时,(~CR)则为1,此时将8为二进制数给Q,即实现移位寄存器的异步清零。Case语句类似于C语言中的case语句,同样根据判断条件来选择要执行的分支语句。在case中将S1和S0拼接为2位矢量,来共同决定判断结果。同样,移位由串行输入和7个触发器的输入拼接起来进行描述,如Q={Dsl,Q[7:1]};说明了左移操作,即在时钟信号CP上升沿作用下,将左移输入端Dsl的数据直接传给输出Q[7],而触发器输出端的数据左移一位,Q[7:1]传给Q[6:0](即Q[7]-Q[6],Q[6]-Q[5],……,Q[1]-Q[0]),于是,完成将数据左移一位的操作。但是需要注意,上述程序中所注释的右移和左移方向与图3一致,而与Verilog描述语句中的排列和移动方向正好相反。后者与一般技术机程序一致(即高位在左,低位在右)。
;4 程序仿真
在QuartuaII中建立shift工程,添加Verilog文件,编写源代码后,进行全编译。编译成功后,即可对定义的模块进行功能仿真。仿真步骤查看相关QuartusII书籍。本设计中,将所有定义的引脚添加入仿真环境中,对输入数据进行强制设定,运行后观察输出波形及其时序图。
根据8位双向移位寄存器的真值表,仿真时,首先考察此移位寄存器的左移、右移、保持和并行输入的基本功能,然后再在串行输入端加入信号,观察移位寄存器的时序波形。
图4 基本功能时序图
;图4 基本功能时序图;根据图4,观察S1和S0信号,每个基本功能的仿真之前都先强制S1=S0=1,即实现并行输入功能,给输入D[7:0]设置初值,然后再下一个周期对S1、S0进行改变,观察输出Q的变化。
程序中,语句always
文档评论(0)