欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

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

    • 资源ID:10582726       资源大小:271.50KB        全文页数:14页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    武汉理工大学暑期能力拓展训练目录1多功能双向移位寄存器11.1基本工作原理11.2 基本实现方案12电路图设计22.1 电路结构22.2真值表33移位寄存器的Verilog建模33.1Verilog建模基础43.2 8位双向移位寄存器Verilog描述54程序仿真65心得体会8参考文献10附录11摘要使用硬件描述语言Verilog,在EDA工具QuartussII中,对8位双向移位寄存器进行行为级描述,根据设计语言进行功能时序仿真,验证设计的正确性与可行性。通过本基本设计熟悉QuartusII环境下的硬件描述操作流程,掌握基本的Verilog语法与编写风格。关键字:Verilog QuartusII 移位寄存器3设计8位双向移位寄存器电路1多功能双向移位寄存器1.1基本工作原理移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。但有时候需要对移位寄存器的数据流向加以控制,实现数据的双向移动,其中一个方向称为右移,另一个方向称为左移,这种移位寄存器就称为双向移位寄存器。根据国家标准规定,逻辑图中的最低有效位(LSB)到最高有效位(MSB)的电路排列顺序应从上到下,从左到右。因此定义移位寄存器中的数据从低位触发器移向高位为右移,移向低位为左移。为了扩展逻辑功能和增加使用的灵活性,某些双向移位寄存器集成电路产品又附加了并行输入、并行输出等功能。下图所示是上述几种工作模式的简化示意图。图1-1 多功能移位寄存器工作模式简图1.2 基本实现方案图1-2所示是实现数据保持、右移、左移、并行置入和并行输出的一种电路方案。图中的D触发器是N为移位寄存器中的第m位触发器,在其数据输入端插入了一个4选1数据选择器,用2位编码输入控制,来选择触发器输入信号的来源。当时,选择该触发器本身输出的,次态为,使触发器保持状态不变;当时,触发器的输出被选中,故CP脉冲上升沿到来时,存入此前的逻辑值,即,而,从而实现右移功能;类似地,当时,选择,实现左移功能;而当时,则选中并行输入数据,其次态,从而完成并行数据的置入功能。上述四种操作概述于表1-1,此外,在各触发器的输入端,可以得到N位并行数据的输出。图1-2 实现多功能双向移位寄存器的一种方案表1-1 图1-2的功能表控制信号功能控制信号功能S1S0S1S000保持10左移01右移11并行输入2电路图设计2.1 电路结构根据上一节的移位寄存器的一种基本实现方案,可以设计出8位双向移位寄存器,完整电路图入图2-1所示。此电路由8个4选1数据选择器、8个带异步清零的D触发器组成。所有的数据选择器编码端分别对应地接在一起,同时选择D触发器的信号数据来源。D触发器时钟端CP接一起,清零端也同样接在一起,这样可以保证级联D触发器的同步,和并行输出数据的清零。另,每个D触发器的输出对应一位并行输入。Dsr是右移串行数据输入端,Dsl是左移串行数据输入端,分别接最低有效位对应的数据选择器和最高有效位对应的数据选择器。图2-1 8位双向移位寄存器2.2真值表分析电路图,可得此8位双向移位寄存器的真值表,入下表所示:表2-1 8位双向移位寄存器真值表输 入输 出清零控制信号串行输入时钟CP并行输入S1S0DsrDslLLHLLHLHLHLHHHHLLHHLHHHH注:表示CP脉冲上升沿之前瞬间的电平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可以被省略。在Verilog中,将逻辑电路的敏感事件分为两种类型:电平敏感事件和边沿触发事件。在组合电路中,输入信号的变化直接会导致输出信号的变化。时序电路中的锁存器输出在使能信号为高电平时未亦随输入电平变化,这种对输入信号电平变化的响应称为电平敏感事件。而触发器状态的变化仅仅发生在时钟脉冲的上升沿或下降沿。Verilog中分别用关键词posedge(上升沿)和negedge(下降沿)进行说明,这就是边沿敏感事件。3.2 8位双向移位寄存器Verilog描述本设计通过行为级描述语句always描述了一个8位双向移位寄存器,它有两个选择输入端、两个串行数据输入端、8个并行数据输入端和8个并行数据输出端,完成的功能与图2-1的电路相同。它有5种功能:异步置零、同步置数、左移、右移和保持状态不变。当清零信号CR跳变到低电平时,寄存器的输出被异步置零;否则,当CR=1时,与时钟信号有关的4种功能由case语句中的两个选择输入信号S1和S0决定(在case后面S1、S0被拼接成2位矢量)。设计程序如下:/Behavioral description of Universal shift registermodule shift (S1,S0,D,Dsl,Dsr,Q,CP,CR);input S1,S0;/Select inputsinput Dsl,Dsr;/serial data inputinput CP,CR;/Clock and Resetinput 7:0D;/Parallel Data inputoutput 7:0Q;/Register ouputreg7:0Q;always (posedge CP or negedge CR)if(CR) Q <= 8b00000000 ;elsecase (S1,S0)2b00:Q<=Q;/No change2b01:Q<=Q6:0,Dsr;/Shift right2b10:Q<=Dsl,Q7:1;/Shift left2b11:Q<=D;/Patallel load inputendcaseendmodule在程序中定义了一个模块(module)shift,在QuartusII中新建工程文件时,定义的顶层模块名需要与工程名保持一致,否则在编译时会出现错误。模块前端为基本输入输出口的设置。使用了行为级描述语言always,后跟ifelse判断语句,在循环执行过程中来根据输入信号判断做出相应的动作。其中if(CR) Q<=8b00000000 ;表示当CR信号为低电平时,(CR)则为1,此时将8为二进制数b00000000赋给Q,即实现移位寄存器的异步清零。Case语句类似于C语言中的case语句,同样根据判断条件来选择要执行的分支语句。在case中将S1和S0拼接为2位矢量,来共同决定判断结果。同样,移位由串行输入和7个触发器的输入拼接起来进行描述,如Q<=Dsl,Q7:1;说明了左移操作,即在时钟信号CP上升沿作用下,将左移输入端Dsl的数据直接传给输出Q7,而触发器输出端的数据左移一位,Q7:1传给Q6:0(即Q7->Q6,Q6->Q5,,Q1->Q0),于是,完成将数据左移一位的操作。但是需要注意,上述程序中所注释的右移和左移方向与图2-1一致,而与Verilog描述语句中的排列和移动方向正好相反。后者与一般技术机程序一致(即高位在左,低位在右)。4程序仿真在QuartuaII中建立shift工程,添加Verilog文件,编写源代码后,进行全编译。编译成功后,即可对定义的模块进行功能仿真。仿真步骤查看相关QuartusII书籍。本设计中,将所有定义的引脚添加入仿真环境中,对输入数据进行强制设定,运行后观察输出波形及其时序图。根据8位双向移位寄存器的真值表,仿真时,首先考察此移位寄存器的左移、右移、保持和并行输入的基本功能,然后再在串行输入端加入信号,观察移位寄存器的书序波形。图4-1为基本功能时序图。图4-1 基本功能时序图根据图4-1,观察S1和S0信号,每个基本功能的仿真之前都先强制S1=S0=1,即实现并行输入功能,给输入D7:0设置初值,然后再下一个周期对S1、S0进行改变,观察输出Q的变化。程序中,语句always (posedge CP or negedge CR)表示当有CP的上升沿或CR的下降沿时触发,因此可以从仿真时序图验证,D和Q的数据改变都发生在CP信号的上升沿。在第一个CP周期上升沿之前,设定的D初值为128,上升沿到来,D是数据移入Q,Q值为128,Q的各位同并行输入D相同。第二个CP周期中,S1=S0=0,移位寄存器功能为保持,从时序图中验证知,Q的初值保持到第三个CP周期上升沿时刻。在第三个CP周期初,设定并行输入D为15,第四个周期为保持,第五个周期,设定S1S0=01,则寄存器实现右移,换算到计算机运算中即为左移一位,数值增大1倍。观察第五个周期CP上升沿之后,Q数值由15增大为30,Q的各位数值与D的各位数值比较,可以看出Q的D移位后的结果,此时串行输入的值为0,仿真验证正确。第六个周期保持数据,第七个周期并行移入数据18,保持一个周期,在第九个周期中,S1S0=10,寄存器功能为左移,换算到计算机运算为右移,及数据变为原来的一半。从仿真时序图知道,第九个CP上升沿到来后,Q数值变为9,功能仿真正确。完成基本功能的仿真后,设置串行输入Dsl和Dsr,继续仿真然后观察时序图。图4-2为加入串行输入时的仿真结果。图4-2 加入串行输入时的仿真结果主要观察第五个周期,Q初值为15,寄存器功能设定为右移,右移串行输入为1,CP上升沿到来后,Q值增大为31,即增大到2倍后右在低位移入1。同样在第九个周期中,寄存器设定功能为左移,CP上升沿到来后,原有的值18变为9,但是左移串行输入为1,从高位引入1,即为128+9=137,功能仿真结果正确。5心得体会通过这次的能力拓展训练的课程设计,使我又学习了很多知识,而且是课堂上不容易学到的知识。俗话说,“实践出真知”,课堂上学习到的理论知识,如果不转化为实践的话,始终都将是一纸空文,没什么大的价值。作为一名电类专业的学生,掌握基本的EDA设计方法是理所当然的事情。虽然我们的课程中,对此次课设使用的硬件描述语言的介绍并不是很多,但是并不代表它不重要,相反,我们需要学好这样一种工具,并熟练掌握。而这次的课设,则给了我学习并使用Verilog和使用QuartusII的机会,和将理论转化为实践的机会,使我获益匪浅。首先,通过课设中的程序设计,查阅相关的资料,我能熟练地使用Verilog语言编写基本的程序,熟悉各寄存器的使用方法和数据传送与处理,根据Verilog来对这些基本的硬件进行行为级的描述。在Verilog程序编写中,我还学到了使用它强大的实序仿真方法,进而根据仿真结果来来辅助程序设计,直到达到预期的功能。这个方法对以后进行Verilog程序的编写和硬件开发将起到很大的帮助。其次,在之前的课程中,我们所学习的编程语言如C、Visual Basic,都是高级语言,在系统下编写,以其自然的语法和结构,和方便的调试工具,使我们很快学习吸收。而此次课设,我们却接触了直接对硬件进行描述的HDL语言,是区别于C之类的。Verilog语言并不像想象中的那么晦涩难懂,其实它也有灵活的结构和处理方式,而且很贴近于C语言的语法习惯和句式,学习起来很容易上手和提升。此外,通过这次课设,明白可以通过Verilog语言和QuartusII来自己定制需要的硬件模块,具有针对性高的特点。如今,我对Verilog语言也有了很浓厚的兴趣,在以后的学习中,我会加大这方面的能力提升,来实现相关电子产品的设计。再次,因为Verilog语言与硬件联系比较紧密,在ASIC设计中使用广泛,同时在嵌入式SOPC中也有及其重要的地位。这种才新兴20余年的技术手段在未来肯定会得到越来越大的推广和使用。如今,在电子产品设计中,EDA已经是越来越受欢迎的手段和方法了,掌握一种和多种EDA工具,入QuartusII和Altium Designer等,是当代大学生尤其是电类专业学生必需的任务。只有掌握足够的工具,才能在更深入的学习中,或将来的工作中熟练地运用这些工具进行电子设计开发。参考文献1康华光, 电子技术基础数字部分北京:高等教育出版社, 20062 赵艳华,曹丙霞,张睿, 基于Quartus II的FPGA/CPLD设计与应用北京:电子工业出版社, 20093 周润景,苏良碧, 基于Quartus II的数字系统Verilog HDL设计实例详解北京:电子工业出版社,20104 乔庐峰,王志功,Verilog HDL数字系统设计与验证北京:电子工业出版社,20095何宾, EDA原理及Verilog实现北京:清华大学出版社,2010附录8位移位双向移位寄存器电路11

    注意事项

    本文(设计8位双向移位寄存器电路.doc)为本站会员(PIYPING)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开