16位通用移位寄存器设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
16位通用移位寄存器设计报告
(1) 设计一个16位循环右移电路,S是移位数,A是移位前的并
行输入,Y是移位后的并行输出(在本设计中,我用Pin表示
移位前的并行输入,Pout表示移位后的并行输入,S表示移位
设计题目要求数),要求估算电路占用的资源大小及电路的速度;
(2) 以上面设计好的16位循环右移电路为核心,扩展设计一个能
进行循环右移、循环左移、算术右移、算术左移、逻辑右移、
逻辑左移的通用移位电路。
设计工具及版本 Quartus II 9.0
设计原理及结构方案
(1)在考虑16位循环右移电路的设计时,我选择用74151“8选1数据选择器”配合门电路进行搭建桶形移位电路,对于每个输出断对应需要用两片74151对16位并行输入数据进行选择,用移位数控制端S(S3S2S1S0)中的S3实现两片74151的片选进而将两片74151组成“16选1数据选择器”,结构如图1。
用16个如图1的结构这可以构成16位输出的循环右移电路结构框图,如图2。
74151 16位并行输入Pin
16位并行输出的其中一端Pout[n]
74151 移位数控制端S
(图1)
16位并行输入Pin 74151 16位并行输出端Pout[0]
74151 移位数控制端S
16位并行输入Pin 74151
16位并行输出端Pout[15]
74151 移位数控制端S
(图2)
(3) 以16位循环右移电路(结构图如上图2)为核心进行构建多功能移位通用电路(结构
图如下图3):
16位16位并行输入Pin 循环循环16位循右移移位环移位并4位全位电移位数控制端S 输出行输出加器路信号74283 移位方式控制端处理16位自定义A、B、LorR 16位循环左移电路产生移位并行输
最终出
的期4位全自定移位数控制端S 望输加器义4-16 出信74283 译码16位译号电路码序列移位方式控制端
A、B、LorR
根据移位方式产生
所需要的译码序列
(图3)
电路设计描述
(1)16位循环右移电路设计:
选择用2片74151“8选1数据选择器”对16位并行输入数据根据移位数和所在输出位置进行选择,作为Pout[n],例如Pout[0]对应的第一片74151的
D7D6D5D4D3D2D1D0分别对应Pin[7]---Pin[0], 第二片74151的
D7D6D5D4D3D2D1D0分别对应Pin[15]---Pin[8];再如Pout[6]对应的第一片74151的D7D6D5D4D3D2D1D0分别对应Pin[13]---Pin[6], 第二片74151的
D7D6D5D4D3D2D1D0分别对应Pin[5]---Pin[0]Pin[15]Pin[14],按照这样的方式不
同的输出位对应的不同的接线方法就可以根据S(S3S2S1S0)选择相应的输入数据作为输出Pout[n]。
(2)扩展为16位的循环右移电路:
对于循环移位而言,循环左移N位即相当于右移16-N位,根据这个原理,在左移N位时就可以将控制端S(S3S2S1S0)各位分别求反然后加1既得16-N,然后用新产生的移位位数作为16位循环右移电路的移位位数控制端,这样输出就是右移16-N位,也即左移N位。
(3)将循环左右移位电路扩展为算术左右移位、逻辑左右移位通用电路:
首先,我们知道算术左移是低位移向高位,最低位补“0”,算术右移是高位移向低位,最高位保持不变;逻辑左移是低位移向高位,最低位补“0”,逻辑右移是高位移向低位,最高位移入“1”。
通过观察我们发现,算术左移和逻辑左移是相同的移位操作,因此扩展时实际上是扩展为三类:算术\逻辑左移、算术右移、逻辑右移。
其次,对各个扩展移位功能分配移位方式控制信号:A B LorR=000时进行循环右移;A B LorR=001时进行循环左移;A B LorR=011时进行算术\逻辑左移;A B LorR=100时进行算术右移;A B LorR=100时进行逻辑右移。
然后,通过观察发现算术、逻辑移位实际是对循环移位进行相应位的变化而得到。
在这里我们首先设计一个自定义的4—16译码器,要求译码器的真值表如下: S3 S2 S1 S0 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
0 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
再设循环左右移位电路的16位输出分别为
Y15Y14Y13Y12Y11Y10Y9Y8Y7Y6Y5Y4Y3Y2Y1Y0,
可以得到如下逻辑:(1)循环移位\算术\逻辑左移时有 Pout[n]=Yn Dn A`(其中A`是对A求反,通过移位方式控制端A、B控制自定义4—16译码电路使得当
AB=00时4—16自定义译码电路的输入全为00,这样输出Dn=1,也即相当于译码电路不起作用;当AB=01时,4—16自定义译码电路根据移位位数控制输入端进行产生相应的移位调整序列);(2)算术右移时有Pout[n]=(Y15 Dn+ Yn Dn`)AB`;(3)逻辑右移时有 Pout[n]=(Yn Dn`)AB。
最后,对电路进行修正,使得当控制输入端输入信号A B LorR=010、101、111时电路输出全为0。
仿真激励设计方案及电路仿真结果
在对设计好的电路进行仿真时,考虑到该电路的实际应用中不可能工作在频率极高的环境中,这样的话在仿真时为了能够清楚地分辨结果,可以视16位的并行输入为一个固定的输入。
对于移位位数控制输入端,可以用时间间隔为100ns的信号进行仿真,这样可以由仿真结果得出电路的延迟以及竞争冒险的时间。
(1)A B LorR=000,电路功能实现循环右移,仿真结果如下图4:
(图4)
(2)A B LorR=001,电路功能实现循环左移,仿真结果如下图5:
(图5)
(3)A B LorR=011,电路功能实现算术\逻辑左移,仿真结果如下图6:
(图6)
(4)A B LorR=100,电路功能实现算术右移,仿真结果如下图7:
(图7)
(5)A B LorR=110,电路功能实现逻辑右移,仿真结果如下图8:
(图8)
(6)A B LorR=010、101、111,此三种输入控制信号为违法信号,输出结果应全为0,仿真结果如下图9:
(图9)
设计总结
在本设计中,采用桶形移位电路,大大降低了电路整体的延迟时间,使的竞争冒险的时间不大于10ns,符合工程应用的条件,这是本设计的突出优势。
但是,由于采用了桶形移位电路设计,所以整体电路用到了32片74151“8选1数据选择器”和两片74283“4位全加器”,使用了将近300个不同种类的“门”,整个电路消耗的硬件资源较多,这是本电路的需要继续改进的地方。
通过该课程设计,进一步理解了集成电路的设计程序、方法技巧,但是由于大规模集成电路内部较为复杂,排线极容易出错而且不容易排查出错误所在,由于设计完成的电路需要对可能的输入结果进行逐一验证,然后对验证不符的情况对电路进行修改,这也是本设计后期过程中最耗费时间的地方。
EMAIL:coollover@。