EDA不同类型的移位寄存器设计报告_第1页
EDA不同类型的移位寄存器设计报告_第2页
EDA不同类型的移位寄存器设计报告_第3页
EDA不同类型的移位寄存器设计报告_第4页
EDA不同类型的移位寄存器设计报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.EDA实训实验报告课程名称:不同类型的移位寄存器设计专业:13自动化指导教师:**:**:提交日期:2016-7-8实验一含同步预置功能的移位寄存器设计一、实验目的设计带有同步并预置功能的8位右移移位寄存器。二、实验容:

CLK

是移位时钟信号,DIN是8位并行预置数据端口,LOAD是并行数据预置使能信号,QB是串行输出端口三、实验原理:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSHFRTIS--8位右移寄存器PORT(CLK,LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);QB:OUTSTD_LOGIC);ENDSHFRT;ARCHITECTUREbehavOFSHFRTISBEGINPROCESS(CLK,LOAD)VARIABLEREG8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿IFLOAD='1'THENREG8:=DIN;--由(LOAD='1')装载新数据ELSEREG8(6DOWNTO0):=REG8(7DOWNTO1);ENDIF;ENDIF;QB<=REG8(0);--输出最低位ENDPROCESS;ENDbehav;引脚分配:端口名端口模式引脚CLKInputPIN_53DIN[7]InputPIN_66DIN[6]InputPIN_64DIN[5]InputPIN_62DIN[4]InputPIN_61DIN[3]InputPIN_58DIN[2]InputPIN_57DIN[1]InputPIN_56DIN[0]InputPIN_55LOADInputPIN_54QBOutputPIN_52四、实验过程:引脚设定五、实验结果:输出波形图实验二8位串入并出移位寄存器电路的设计一、实验容用VHDL语言实现8位串入并出移位寄存器电路的设计。二、实验原理LIBRARYIEEE;USEIEEE.Std_logic_1164.all;ENTITYte*tISPORT(a,b,clr,clock:INBIT;q:BUFFERBIT_VECTOR(0TO7));ENDte*t;ARCHITECTUREoneOFte*tISBEGINPROCESS(a,b,clr,clock)BEGINIFclr='0'THENq<="00000000";ELSEIFclock'EVENTANDclock='1'THENFORiINq'RANGELOOPIFi=0THENq(i)<=(aANDb);ELSEQ(i)<=q(i-1);ENDIF;ENDLOOP;ENDIF;ENDIF;ENDPROCESS;ENDone;保存本文本。三、仿真结果建立仿真波形文件,进行时序防震,得到的仿真结果如下图1所示:图1实验三串入串出移位寄存器设计实验目的根据实验容中介绍的4位串入/串出移位寄存器的设计方法,设计一个8位串入/串出移位寄存器。二、实验容在这里我们通过一个4位串入/串出移位寄存器设计过程来介绍如何设计串入/串出移位寄存器。所谓的串入/串出移位寄存器,即输入的数据是一个接着一个依序地进入,输出时一个接着一个依序地送出。三、实验连线输入信号有CLK(时钟信号)、DATA-IN(数据输入),CLK用适配器板子上的时钟端,接数字信号源的CLK5,频率调节到1Hz左右,DATA-IN接拨码开关;输出信号DATA-OUT接发光二极管。四、实验原理LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYsisoISPORT(DATA_IN:INSTD_LOGIC;CLK:INSTD_LOGIC;DATA_OUT:OUTSTD_LOGIC);ENDsiso;ARCHITECTUREaOFsisoISSIGNALQ:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ(0)<=DATA_IN;FORIIN1TO3LOOPQ(I)<=Q(I-1);ENDLOOP;ENDIF;ENDPROCESS;DATA_OUT<=Q(3);ENDa;五、波形仿真结果图14位串入/串出移位寄存器仿真波形图因为一开始时寄存器部存储的数据为“0000”,必须等这4个“0”逐一移出后,新的数据才能进入并存储,帮数据的输入和输出会存有4个位延迟时间的差异。DATA_IN表示输入的数据流,DATA_OUT为输出的数据流,Q显示的为寄存器目前存储的数据容。实验四带清零的8位并行输入串行输出移位寄存器一、实验容用VHDL语言实现8位并进串出移位寄存器电路的设计。二、实验原理LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYpisoISPORT(din:INSTD_LOGIC_VECTOR(7DOWNTO0); clk:INSTD_LOGIC; load:INSTD_LOGIC; dout:OUTSTD_LOGIC);ENDpiso;ARCHITECTUREbehavOFpisoISSIGNALq:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(load,clk)BEGIN IF(load='0')THEN q<=din; ELSIF(clk'eventANDclk='1')THEN q(1)<=q(0); FORiIN2TO7LOOP q(i)<=q(i-1); ENDLOOP; ENDIF;ENDPROCESS;PROCESS(load,clk)BEGIN IFload='0'THEN dout<='0'; ELSIF(clk'eventANDclk='1')THEN dout<=q(7); ENDIF;ENDPROCESS;ENDbehav;三、仿真波形结果实验五8位双向移位寄存器电路设计一、基本工作原理移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。但有时候需要对移位寄存器的数据流向加以控制,实现数据的双向移动,其中一个方向称为右移,另一个方向称为左移,这种移位寄存器就称为双向移位寄存器。根据国家标准规定,逻辑图中的最低有效位(LSB)到最高有效位(MSB)的电路排列顺序应从上到下,从左到右。因此定义移位寄存器中的数据从低位触发器移向高位为右移,移向低位为左移。为了扩展逻辑功能和增加使用的灵活性,*些双向移位寄存器集成电路产品又附加了并行输入、并行输出等功能。下图所示是上述几种工作模式的简化示意图。图1-1多功能移位寄存器工作模式简图二、基本实现方案图1-2所示是实现数据保持、右移、左移、并行置入和并行输出的一种电路方案。图中的D触发器是N为移位寄存器中的第m位触发器,在其数据输入端插入了一个4选1数据选择器,用2位编码输入控制,来选择触发器输入信号的来源。当时,选择该触发器本身输出的,次态为,使触发器保持状态不变;当时,触发器的输出被选中,故CP脉冲上升沿到来时,存入此前的逻辑值,即,而,从而实现右移功能;类似地,当时,选择,实现左移功能;而当时,则选中并行输入数据,其次态,从而完成并行数据的置入功能。上述四种操作概述于表1-1,此外,在各触发器的输入端,可以得到N位并行数据的输出。图1-2实现多功能双向移位寄存器的一种方案表1-1图1-2的功能表控制信号功能控制信号功能S1S0S1S000保持10左移01右移11并行输入三、电路图设计(1)电路结构根据上一节的移位寄存器的一种基本实现方案,可以设计出8位双向移位寄存器,完整电路图入图2-1所示。此电路由8个4选1数据选择器、8个带异步清零的D触发器组成。所有的数据选择器编码端分别对应地接在一起,同时选择D触发器的信号数据来源。D触发器时钟端CP接一起,清零端也同样接在一起,这样可以保证级联D触发器的同步,和并行输出数据的清零。另,每个D触发器的输出对应一位并行输入。Dsr是右移串行数据输入端,Dsl是左移串行数据输入端,分别接最低有效位对应的数据选择器和最高有效位对应的数据选择器。图2-18位双向移位寄存器(2)真值表分析电路图,可得此8位双向移位寄存器的真值表,入下表所示:表2-18位双向移位寄存器真值表输入输出清零控制信号串行输入时钟CP并行输入S1S0DsrDslLLHLLHLHLHLHHHHLLHHLHHHH注:表示CP脉冲上升沿之前瞬间的电平四、移位寄存器的Verilog建模(1)1Verilog建模基础硬件描述语言VerilogHDL类似于高级程序设计语言(如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可以被省略。在Verilog中,将逻辑电路的敏感事件分为两种类型:电平敏感事件和边沿触发事件。在组合电路中,输入信号的变化直接会导致输出信号的变化。时序电路中的锁存器输出在使能信号为高电平时未亦随输入电平变化,这种对输入信号电平变化的响应称为电平敏感事件。而触发器状态的变化仅仅发生在时钟脉冲的上升沿或下降沿。Verilog中分别用关键词posedge(上升沿)和negedge(下降沿)进行说明,这就是边沿敏感事件。(2)位双向移位寄存器Verilog描述本设计通过行为级描述语句always描述了一个8位双向移位寄存器,它有两个选择输入端、两个串行数据输入端、8个并行数据输入端和8个并行数据输出端,完成的功能与图2-1的电路相同。它有5种功能:异步置零、同步置数、左移、右移和保持状态不变。当清零信号CR跳变到低电平时,寄存器的输出被异步置零;否则,当CR=1时,与时钟信号有关的4种功能由case语句中的两个选择输入信号S1和S0决定(在case后面S1、S0被拼接成2位矢量)。设计程序如下: //BehavioraldescriptionofUniversalshiftregister moduleshift(S1,S0,D,Dsl,Dsr,Q,CP,CR); inputS1,S0; //Selectinputs inputDsl,Dsr; //serialdatainput inputCP,CR; //ClockandReset input[7:0]D; //ParallelDatainput output[7:0]Q; //Registerouput reg[7:0]Q; always(posedgeCPornegedgeCR) if(~CR)Q<=8'b00000000; else case({S1,S0}) 2'b00:Q<=Q; //Nochange 2'b01:Q<={Q[6:0],Dsr}; //Shiftright 2'b10:Q<={Dsl,Q[7:1]}; //Shiftleft 2'b11:Q<=D; //Patallelloadinput endcaseendmodule在程序中定义了一个模块(module)shift,在QuartusII中新建工程文件时,定义的顶层模块名需要与工程名保持一致,否则在编译时会出现错误。模块前端为基本输入输出口的设置。使用了行为级描述语言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]),于是,完成将数据左移一位的操作。但是需要注意,上述程序中所注释的右移和左移方向与图2-1一致,而与Verilog描述语句中的排列和移动方向正好相反。后者与一般技术机程序一致(即高位在左,低位在右)。五、程序仿真在QuartuaII中建立shift工程,添加Verilog文件,编写源代码后,进行全编译。编译成功后,即可对定义的模块进行功能仿真。仿真步骤查看相关QuartusII书籍。本设计中,将所有定义的引脚添加入仿真环境中,对输入数据进行强制设定,运行后观察输出波形及其时序图。根据8位双向移位寄存器的真值表,仿真时,首先考察此移位寄存器的左移、右移、保持和并行输入的基本功能,然后再在串行输入端加入信号,观察移位寄存器的书序波形。图4-1为基本功能时序图。图4-1基本功能时序图根据图4-1,观察S1和S0信号,每个基本功能的仿

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论