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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

目录摘要..................................................................................................................................................11多功能双向移位寄存器...............................................................................................................21.1基本工作原理....................................................................................................................21.2基本实现方案....................................................................................................................22电路图设计...................................................................................................................................42.1电路结构............................................................................................................................42.2真值表................................................................................................................................43Verilog描述8位双向移位寄存器...............................................................................................64程序仿真.......................................................................................................................................85总结............................................................................................................................................10参考文献.........................................................................................................................................11武汉理工大学《能力拓展训练》说明书1摘要移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。在本设计中,使用硬件描述语言Verilog,在EDA工具QuartussII中,设计8位双向移位寄存器硬件电路,根据设计语言进行功能时序仿真,验证设计的正确性与可行性。关键字:VerilogQuartusII移位寄存器武汉理工大学《能力拓展训练》说明书28位双向移位寄存器电路设计1多功能双向移位寄存器1.1基本工作原理移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。在本设计中定义移位寄存器中的数据从低位触发器移向高位为右移,移向低位为左移。为了扩展逻辑功能和增加使用的灵活性,某些双向移位寄存器集成电路产品又附加了并行输入、并行输出等功能。如图1所示是上述几种工作模式的简化示意图。D0FF0D1FF1D2FF2D3FF3并行输入并行输出右移串行输入(DIR)左移串行输出(DOL)右移串行输出(DOR)左移串行输入(DIL)Q0Q1Q2Q3图1多功能移位寄存器工作模式简图1.2基本实现方案图2所示是实现数据保持、右移、左移、并行置入和并行输出的一种电路方案。图中的D触发器mFF是N为移位寄存器中的第m位触发器,在其数据输入端插入了一个4选1数据选择器mMUX,用2位编码输入10SS、控制mMUX,来选择触发器输入信号mD的来源。当100SS时,选择该触发器本身输出的mQ,次态为1mnnmmQDQ,使触发器保持状态不变;当100,1SS时,触发器1mFF的输出1mQ被选中,故CP脉冲上升沿到来时,mFF存入1mFF此前的逻辑值,即1m1nnmQQ,而1m+1nnmQQ,从而实现右移功能;类似地,当101,0SS时,mMUX选择1mQ,实现左移功能;而当101SS时,则选中并行输入数据mDI,其次态1nmmQDI,从而完成并行数据的置入功能。上述四种操作概述于表1,此外,武汉理工大学《能力拓展训练》说明书3在各触发器的输入端10~NQQ,可以得到N位并行数据的输出。图2实现多功能双向移位寄存器的一种方案如表1所示,为图2多功能双向移位寄存器的功能表:表1图2的功能表控制信号功能控制信号功能S1S0S1S000保持10左移01右移11并行输入武汉理工大学《能力拓展训练》说明书42电路图设计2.1电路结构根据上一节的移位寄存器的一种基本实现方案,可以设计出8位双向移位寄存器,完整电路图如图3所示。此电路由8个4选1数据选择器、8个带异步清零的D触发器组成。所有的数据选择器编码端10SS分别对应地接在一起,同时选择D触发器的信号数据来源。D触发器时钟端CP接一起,清零端CR也同样接在一起,这样可以保证级联D触发器的同步,和并行输出数据的清零。另,每个D触发器的输出对应一位并行输入。Dsr是右移串行数据输入端,Dsl是左移串行数据输入端,分别接最低有效位对应的数据选择器和最高有效位对应的数据选择器。data3data2data1data0sel[1..0]resultlpm_mux0instdata3data2data1data0sel[1..0]resultlpm_mux0inst4data3data2data1data0sel[1..0]resultlpm_mux0inst5data3data2data1data0sel[1..0]resultlpm_mux0inst6data3data2data1data0sel[1..0]resultlpm_mux0inst7data3data2data1data0sel[1..0]resultlpm_mux0inst8data3data2data1data0sel[1..0]resultlpm_mux0inst3CLRNDPRNQDFFinst17CLRNDPRNQDFFinst19CLRNDPRNQDFFinst20CLRNDPRNQDFFinst21CLRNDPRNQDFFinst22CLRNDPRNQDFFinst23CLRNDPRNQDFFinst24VCCCRINPUTVCCS1INPUTVCCS0INPUTVCCDsrINPUTVCCD0INPUTVCCD1INPUTVCCD2INPUTVCCD3INPUTVCCD4INPUTVCCD5INPUTVCCD6INPUTVCCD7INPUTVCCDslINPUTQ0OUTPUTQ1OUTPUTQ2OUTPUTQ3OUTPUTQ4OUTPUTQ5OUTPUTQ6OUTPUTQ7OUTPUTGNDCLKINPUTCLRNDPRNQDFFinst18GNDCPINPUTdata3data2data1data0sel[1..0]resultlpm_mux0inst25图38位双向移位寄存器2.2真值表分析电路图,可得此8位双向移位寄存器的真值表,如表2所示:武汉理工大学《能力拓展训练》说明书5表28位双向移位寄存器真值表输入输出清零控制信号串行输入时钟CP并行输入1107~nnQQCRS1S0DsrDsl07~DIDILLHLL07~nnQQHLHL06~nnLQQ、HLHH06~nnHQQ、HHLL17~nnQQL、HHLH17~nnQQH、HHH**07~DIDI07~DIDI注:*NDI表示CP脉冲上升沿之前瞬间NDI的电平武汉理工大学《能力拓展训练》说明书63Verilog描述8位双向移位寄存器本设计通过行为级描述语句always描述了一个8位双向移位寄存器,它有两个选择输入端、两个串行数据输入端、8个并行数据输入端和8个并行数据输出端,完成的功能与图3的电路相同。它有5种功能:异步置零、同步置数、左移、右移和保持状态不变。当清零信号CR跳变到低电平时,寄存器的输出被异步置零;否则,当CR=1时,与时钟信号有关的4种功能由case语句中的两个选择输入信号S1和S0决定(在case后面S1、S0被拼接成2位矢量)。设计程序如下://BehavioraldescriptionofUniversalshiftregistermoduleshift(S1,S0,D,Dsl,Dsr,Q,CP,CR);inputS1,S0;//SelectinputsinputDsl,Dsr;//serialdatainputinputCP,CR;//ClockandResetinput[7:0]D;//ParallelDatainputoutput[7:0]Q;//Registerouputreg[7:0]Q;always@(posedgeCPornegedgeCR)if(~CR)Q=8'b00000000;elsecase({S1,S0})2'b00:Q=Q;//Nochange2'b01:Q={Q[6:0],Dsr};//Shiftright2'b10:Q={Dsl,Q[7:1]};//Shiftleft2'b11:Q=D;//Patallelloadinputendcaseendmodule在程序中定义了一个模块(module)shift,在QuartusII中新建工程文件时,定义的顶层模块名需要与工程名保持一致,否则在编译时会出现错误。模块前端为基本输入输出口的设置。武汉理工大学《能力拓展训练》说明书7使用了行为级描述语言always,后跟if……else……判断语句,在循环执行过程中来根据输入信号判断做出相应的动作。其中if(~CR)Q=8’b00000000;表示当CR信号为低电平时,(~CR)则为1,此时将8为二进制数b00000000赋给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]),于是,完成将数据左移一位的操作。但是需要注意,上述程序中所注释的右移和左移方向与图

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功