




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录摘要11 多功能双向移位寄存器21.1 基本工作原理21.2 基本实现方案22 电路图设计42.1 电路结构42.2 真值表43 Verilog描述8位双向移位寄存器64 程序仿真85 总结10参考文献11摘要移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。在本设计中,使用硬件描述语言Verilog,在EDA工具QuartussII中,设计8位双向移位寄存器硬件电路,根据设计语言进行功能时序仿真,验证设计的正确性与可行性。关键字:Verilog QuartusII 移位寄存器8位双向移位寄存器电路设计1 多功能双向移
2、位寄存器1.1 基本工作原理移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。在本设计中定义移位寄存器中的数据从低位触发器移向高位为右移,移向低位为左移。为了扩展逻辑功能和增加使用的灵活性,某些双向移位寄存器集成电路产品又附加了并行输入、并行输出等功能。如图1所示是上述几种工作模式的简化示意图。图1 多功能移位寄存器工作模式简图1.2 基本实现方案图2所示是实现数据保持、右移、左移、并行置入和并行输出的一种电路方案。图中的D触发器是N为移位寄存器中的第m位触发器,在其数据输入端插入了一个4选1数据选择器,用2位编码输入控制
3、,来选择触发器输入信号的来源。当时,选择该触发器本身输出的,次态为,使触发器保持状态不变;当时,触发器的输出被选中,故CP脉冲上升沿到来时,存入此前的逻辑值,即,而,从而实现右移功能;类似地,当时,选择,实现左移功能;而当时,则选中并行输入数据,其次态,从而完成并行数据的置入功能。上述四种操作概述于表1,此外,在各触发器的输入端,可以得到N位并行数据的输出。图2 实现多功能双向移位寄存器的一种方案 如表1所示,为图2多功能双向移位寄存器的功能表:表1 图2的功能表控制信号功能控制信号功能S1S0S1S000保持10左移01右移11并行输入2 电路图设计2.1 电路结构根据上一节的移位寄存器的一
4、种基本实现方案,可以设计出8位双向移位寄存器,完整电路图如图3所示。此电路由8个4选1数据选择器、8个带异步清零的D触发器组成。所有的数据选择器编码端分别对应地接在一起,同时选择D触发器的信号数据来源。D触发器时钟端CP接一起,清零端也同样接在一起,这样可以保证级联D触发器的同步,和并行输出数据的清零。另,每个D触发器的输出对应一位并行输入。Dsr是右移串行数据输入端,Dsl是左移串行数据输入端,分别接最低有效位对应的数据选择器和最高有效位对应的数据选择器。图3 8位双向移位寄存器2.2 真值表分析电路图,可得此8位双向移位寄存器的真值表,如表2所示:表2 8位双向移位寄存器真值表输 入输 出
5、清零控制信号串行输入时钟CP并行输入S1S0DsrDslLLHLLHLHLHLHHHHLLHHLHHHH注:表示CP脉冲上升沿之前瞬间的电平3 Verilog描述8位双向移位寄存器本设计通过行为级描述语句always描述了一个8位双向移位寄存器,它有两个选择输入端、两个串行数据输入端、8个并行数据输入端和8个并行数据输出端,完成的功能与图3的电路相同。它有5种功能:异步置零、同步置数、左移、右移和保持状态不变。当清零信号CR跳变到低电平时,寄存器的输出被异步置零;否则,当CR=1时,与时钟信号有关的4种功能由case语句中的两个选择输入信号S1和S0决定(在case后面S1、S0被拼接成2位矢
6、量)。设计程序如下:/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 = 8b00
7、000000 ;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=
8、8b00000000 ;表示当CR信号为低电平时,(CR)则为1,此时将8为二进制数b00000000赋给Q,即实现移位寄存器的异步清零。Case语句类似于C语言中的case语句,同样根据判断条件来选择要执行的分支语句。在case中将S1和S0拼接为2位矢量,来共同决定判断结果。同样,移位由串行输入和7个触发器的输入拼接起来进行描述,如QQ6,Q6-Q5,,Q1-Q0),于是,完成将数据左移一位的操作。但是需要注意,上述程序中所注释的右移和左移方向与图3一致,而与Verilog描述语句中的排列和移动方向正好相反。后者与一般技术机程序一致(即高位在左,低位在右)。4 程序仿真在QuartuaII
9、中建立shift工程,添加Verilog文件,编写源代码后,进行全编译。编译成功后,即可对定义的模块进行功能仿真。仿真步骤查看相关QuartusII书籍。本设计中,将所有定义的引脚添加入仿真环境中,对输入数据进行强制设定,运行后观察输出波形及其时序图。根据8位双向移位寄存器的真值表,仿真时,首先考察此移位寄存器的左移、右移、保持和并行输入的基本功能,然后再在串行输入端加入信号,观察移位寄存器的书序波形。图4 基本功能时序图根据图4,观察S1和S0信号,每个基本功能的仿真之前都先强制S1=S0=1,即实现并行输入功能,给输入D7:0设置初值,然后再下一个周期对S1、S0进行改变,观察输出Q的变化
10、。程序中,语句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上升
11、沿之后,Q数值由15增大为30,Q的各位数值与D的各位数值比较,可以看出Q的D移位后的结果,此时串行输入的值为0,仿真验证正确。第六个周期保持数据,第七个周期并行移入数据18,保持一个周期,在第九个周期中,S1S0=10,寄存器功能为左移,换算到计算机运算为右移,及数据变为原来的一半。从仿真时序图知道,第九个CP上升沿到来后,Q数值变为9,功能仿真正确。完成基本功能的仿真后,设置串行输入Dsl和Dsr,继续仿真然后观察时序图。图5 加入串行输入时的仿真结果主要观察第五个周期,Q初值为15,寄存器功能设定为右移,右移串行输入为1,CP上升沿到来后,Q值增大为31,即增大到2倍后右在低位移入1。同
12、样在第九个周期中,寄存器设定功能为左移,CP上升沿到来后,原有的值18变为9,但是左移串行输入为1,从高位引入1,即为128+9=137,功能仿真结果正确。5 总结通过此次的能力拓展训练,我初步掌握了Verilog硬件描述语言,学会了在QuartusII中设计一些简单的硬件电路,受益匪浅。首先,通过查阅相关的资料,我初步地学会了使用Verilog语言编写基本的程序,熟悉了各寄存器的使用方法和数据传送与处理,根据Verilog来对这些基本的硬件进行行为级的描述。在Verilog程序编写中,我还体会到了它强大的实序仿真功能,进而根据仿真结果来来辅助程序设计,直到达到预期的功能。这个方法对以后进行V
13、erilog程序的编写和硬件开发将起到很大的帮助。其次,在本次能力拓展训练中,初次接触到QuartusII软件,在查阅相关资料后,对其功能及使用方法有了一定的掌握。此外,在本次设计中,通过结合Verilog语言和QuartusII来定制所需要的硬件模块,具有针对性高的特点。最后,通过本次能力拓展训练,再次加强了自身的硬件、软件相结合的动手设计能力,加强了自身通过查阅资料,自学设计的能力,极大地提高了专业能力,为以后毕业设计及走上社会岗位打下了坚实的基础。如今,在电子产品设计中,EDA已经是越来越受欢迎的手段和方法了,掌握一种和多种EDA工具,入QuartusII和Altium Designer等,是当代大学生尤其是自动化专业学生必需的任务。只有掌握足够的工具,才能在更深入的学习中,或将来的工作中熟练地运用这些工具进行相关设计研发。参考文献1康华光.电子技术基础数字部分M.北京:高等
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级上数学教案 课件-除法的的初步认识第二课时-西师大版
- 几倍(教案)二年级上册数学沪教版
- 2025年分手费补偿协议模板
- 第二章第一节地形地势教学设计2023-2024学年人教版初中地理八年级上册
- 2025年学习雷锋精神62周年主题活动方案
- 2025年河南女子职业学院单招职业倾向性测试题库汇编
- 第四单元口语交际:请你支持我 教学设计-2024-2025学年六年级上册语文统编版
- 2025年怀化师范高等专科学校单招职业适应性测试题库完美版
- 2025年河北美术学院单招职业技能测试题库一套
- 二零二五年度诊所与医疗培训学校合作协议
- 八年级数学下册-全一册-教学课件-(新版)浙教版
- 农产品电子商务培训资料课件
- 传热学课后习题答案
- 酒店员工奖惩管理规章制度
- 视频号精细化运营培训课件
- 雅马哈便携式电子琴KB-100说明书
- 固定财产清查登记汇总表
- DB12-T 1153-2022城市轨道交通运营设备设施大修和更新改造技术规范
- ava标准录播教室应用解决方案
- 粗粒土和巨粒土最大干密度试验检测记录表
- 青岛版五四制三年级下册数学课件 小数的认识
评论
0/150
提交评论