16位通用移位电路.doc

上传人:鲁** 文档编号:558260671 上传时间:2022-12-31 格式:DOC 页数:9 大小:2.25MB
返回 下载 相关 举报
16位通用移位电路.doc_第1页
第1页 / 共9页
16位通用移位电路.doc_第2页
第2页 / 共9页
16位通用移位电路.doc_第3页
第3页 / 共9页
16位通用移位电路.doc_第4页
第4页 / 共9页
16位通用移位电路.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《16位通用移位电路.doc》由会员分享,可在线阅读,更多相关《16位通用移位电路.doc(9页珍藏版)》请在金锄头文库上搜索。

1、姓名学号报告人联系方式电话:Email设计题目要求已知一个16-bit循环移位(右移)电路的功能表如右。信号S是移位数,A是移位前的并行输入,Y是移位后的并行输出。(1)完成该电路的硬件设计。要求估算电路占用的资源大小及电路的速度。(2)以该移位电路为核心,扩展设计一个能完成算术左移、算术右移、逻辑左移、逻辑右移、循环左移、循环右移。设计工具及版本Quartus II 13.0 64-bit 和 Modelsim-Altera 10.1d 设计原理及结构方案本次设计主要使用74157(二输入四路复用器)为基本单元,通过四个74157组成16位数据选择器,然后在选择端口改变输入数据位,形成移动1

2、位,移动2位,移动4位,移动8位的循环右移模块,再将四个模块组合起来形成1到16位的循环右移模块;由于循环左移n位数据,可以看成循环右移8-n位数据,所以循环左移模块可以通过循环右移模块与一个实现8-n的减法器组合来实现。逻辑左移与算术左移的移位方法一样,对于移动n位的数据,可以通过将前n个高位数据转为0然后循环左移,形成最低位补0的循环移位;算术右移n位,可以通过将低n位数据转为最高位数据再循环右移形成;逻辑右移n位数据,可以通过将低n位数据转为1再循环右移形成。具体电路方案:首先设计出循环右移模块,再扩展成循环左右移模块;然后分别设计出逻辑移位数据转换模块,算术移位数据转换模块,通过数据选

3、择器选择相应功能的16位数据,再与循环左右移模块组合形成具有不同功能的通用移位模块。电路设计具体描述据VLSI课程的知识,设计出循环右移电路实现如下:图1 循环右移1位模块图2 循环右移1位原理图根据右移1位模块,原理同上,可以设计出右移1到16位电路:图3 循环右移1到16位模块图根据老师上课讲的知识,可以知道此模块节省器件,延迟稍大。图4 循环右移一位symbol图5 1到16位循环右移电路如上图所示,shift1,shift2,shift3,shift4分别为1位,2位,4位,8位移位电路的symbol,组合起来形成16位循环右移电路。循环左移电路实现:循环左移n位数据可以看做循环右移8

4、-n位数据;首先设计出8-n位减法器电路:图6 8-n减法器图7 8-n减法器symbol将移位数据选择端S0,S1,S2,S3连接到8-n数据口d0,d1,d2,d3,其中减法器中sel端口是用来选择数据8-n和数据n(S3S2S1S0),即可以用来选择循环左移和右移;将减法器输出数据端口连接到循环右移电路的移位数据选择端实现循环左右移电路。逻辑移位电路实现:逻辑移位要求:逻辑左移时,低位移向高位,最低位补“0”;逻辑右移时,高位移向低位,最高位移入“1”。逻辑左移n位时,可以将高n位的数据转为0,再通过循环左移电路实现最低位补0;逻辑右移n位时,可以将低n为的数据转为1,再通过循环右移电路

5、实现最高位移入1;算术移位电路实现:算术移位要求:算术左移时,低位移向高位,最低位补“0”,与逻辑左移相同;算术右移时,高位移向低位,最高位维持原值不变。算术左移n位时,可以采用逻辑移位的方法;算术右移n位时,可以将低n位的数据转为最高位A15的值,这个可以通过两位数据选择器实现,再通过循环右移电路实现最高位保持原值。图8 数据转换电路上图中,输入数据n(IN4 IN3 IN2 IN1),则输出16位数据,其中低n位全为0,高n位数据全为1,例如,输入0010,则输出1111 1111 1111 1100,这个电路可以用来实现逻辑移位和算术移位时的数据转换。图9 数据转换电路symbol图10

6、 逻辑/算术左移数据转换电路图10中,输入数据A15A0和移位数据选择端S3S2S1S0(n位移位),则输出高n位数据为0,其他位保持不变,如输入A15A0,0010(S3S2S1S0),则输出为00 A13A0,将输出位连到循环左移电路端口即实现逻辑左移。同理,可以得到逻辑右移数据转换电路和算术右移数据转换电路。图11 逻辑右移数据转换电路symbol图12 算术右移数据转换电路symbol图13 算术/逻辑左移数据转换电路symbol整体电路原理图:在上图中,首先通过扩展后的16位数据选择器选择转换后的逻辑右移数据和转换后的算术右移数据,sel1控制数据选择,sel1=0时选择逻辑右移数据

7、,sel1=1选择逻辑算术右移数据,输出的16位数据连接到下一个16位数据选择器b端口,a端口接转换后的逻辑/算术左移数据,sel0控制数据选择,sel0=0时选择逻辑/算术左移移数据,sel0=1选择上一级数据选择器输出数据,接着输出后的16位数据再次接到下一级数据选择器的a端口,b端口接原始的16位移位数据A15A0,sel2控制数据选择。下面是功能选择的命令控制:sel0 sel1 sel2循环左移 0 任意 1循环右移 1 任意 1逻辑(算术)左移 0 任意 0逻辑右移 1 0 0算术右移 1 1 0 仿真激励设计方案及电路仿真结构通过改变S0,S1,S2,S3,sel0,sel1,s

8、el2的值来仿真电路,激励的一部分hdl语言描述如下:always : PROCESS (S0,S1,S2,S3,sel0,sel1,sel2) BEGIN S0=not S0 after 10ns;S1=not S1 after 20ns; S2=not S2 after 30ns;S3=not S3 after 40ns;sel0=not sel0 after 50ns;sel1=not sel1 after 60ns;sel2=not sel2 after 70ns; END PROCESS always; END last_arch;功能仿真波形如下:1. 算术/逻辑左移:sel2 s

9、el1 sel0 S3S2S1S0 A15A0 Y15Y00 1 0 0011 1000100101100010 01001011000100002. 算术右移sel2 sel1 sel0 S3S2S1S0 A15A0 Y15Y00 1 1 0100 1000100101100010 11111000100101103. 逻辑右移sel2 sel1 sel0 S3S2S1S0 A15A0 Y15Y00 0 1 1011 1000100101100010 11111111111100014. 循环右移sel2 sel1 sel0 S3S2S1S0 A15A0 Y15Y01 0 1 1001 10

10、00100101100010 10110001010001005. 循环左移sel2 sel1 sel0 S3S2S1S0 A15A0 Y15Y01 0 0 1100 1000100101100010 0010100010010110时序仿真波形如下:通过modelsim中.vho网表文件进行后仿真,器件型号为cycloneiv系列:从上图中可以看出,电路延迟时间大概为1ns左右,速度较快。电路所占资源大概为30左右个74系列器件及少数的逻辑门。设计总结本次设计历时5天左右完成,期间遇到很多问题,比如74器件不能直接转为hdl语言描述,instance名称必须不能重名;克服这些问题后,经过一次次的调试仿真,最终成功运行电路,对quartus有了更深的认识。虽然往届有学长做过这个电路,但本次电路设计并没采用以前的思想,而是首先通过减法器实现循环左右移位,再对16位数据进行转换与循环移位电路串联形成通用移位电路,电路看起来相对简单易懂,速度较快。报告人签章:日期:2014.1.10

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号