ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:1.99MB ,
资源ID:11600011      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11600011.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于与非门和D触发器的32位加法器的FPGA设计.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于与非门和D触发器的32位加法器的FPGA设计.docx

1、基于与非门和D触发器的32位加法器的FPGA设计基于与非门和D触发器的32位加法器【摘要】这次的课程设计的任务是设计一个输入范围为-(230-1)(230-1)的加法器。利用拨码开关输入二进制补码,再将二进制补码转化为串行信号,经过一位全加器后得到计算结果,再将计算结果转化为并行信号输出,并利用LED灯显示计算结果的二进制补码。本次设计通过开关的闭合和断开来代表电平的高低,继而代表代表1和0来输入所要计算的十进制数的补码。将并行输入转化为串行输出的模块和将串行输入转化为并行输出的模块是由与非门和D触发器构成的移位寄存器。但是,这样并不能保证输出的稳定,所以我们在串入并出的移位寄存器的每个输出后

2、面各加了一个D触发器,只有当32位补码全部并出时,D触发器才会触发,将结果显示,其余时候D触发器将保持上一个输出结果。这样就能确保计算结果的稳定显示。而控制并入串出信号的加载和最后结果稳定显示的控制电路是由与非门和D触发器构成的模32计数器,每次计32个时钟上升沿时便会产生一个上升沿。用来控制移位寄存器移位动作和计数器的时钟信号,是由NE555电路产生的1KHz的脉冲信号。【关键词】32位加法器:移位寄存器;计数器;NE555一、设计目的与要求1、设计目的1)掌握计数器、移位寄存器的电路设计与工作原理。2)学会分析各模块之间的时延关系,并调节各个模块之间的时延关系。3)掌握信号并入串出和串入并

3、出的工作原理。4)了解时钟信号的产生。2、设计要求设计一个输入范围为-(230-1)(230-1)的加法器。具体要求如下:1)只能使用与非门和D触发器。2)用两组拨码开关分别输入两个加数的二进制补码。3)用二极管稳定显示计算结果的二进制补码。4)利用Multisim设计仿真。二、设计思路 我们将加法器可以分为3级:第一级是并入串出模块;第二级是加法运算模块(一位全加器);第三级是串入并出模块。第一级模块负责将拨码快关的并行输入转化为串行输出,作为第二级输入,输入到第二级加法运算模块,得到一个串行输出的计算结果,将该结果作为第三级输入,再由第三级模块转化为并行输出,最后由LED显示。并且,三个模

4、块由同一个时钟信号(1KHz脉冲信号)进行控制。32进制计数器用来控制并入串出模块并行信号的加载和串入并出模块并行信号的稳定输出,具体就是当计数器计满32个时钟周期时,并入串出模块加载信号,同时串入并出模块输出信号。根据思路,我们设计了模块电路,如图2-1所示图2-1 加法器整体架构虽然题目要求的输入范围为-(230-1)(230-1),只需输入31位二进制位即可,但是考虑到最后的计算结果可能会出现32位二进制位(产生进位),为了对进位处理方便,同时也为了加载并行信号和输出并行信号的同步,我们也将输入扩展为32位,其中第31位和第32位同时为00或11,可以用一个拨码开关同时控制。三、单元模块

5、的设计1、脉冲发生器设计一开始我们想使用晶振电路来产生时钟脉冲,但是经过仿真之后发现晶振电路产生的脉冲频率过高,无法产生我们所需的1KHz的脉冲信号。经过查找资料,我们决定使用LM555CN来产生1KHZ的脉冲信号。仿真电路如图3-1所示。图3-1 脉冲发生器电路该电路产生的时钟周期与R65、C1有关,时钟周期的计算公式为:占空比为50%。我们选用760的电阻和1uF的电容,产生约1KHz的时钟信号。电路稳定之后产生的波形图如图3-2所示。图3-2 时钟信号波形图从图3-2的波形图中可以看出,产生的时钟信号的周期约为1ms,满足我们的要求。所以我们最后采用了这种时钟信号发生电路。2、32进制计

6、数器设计 我们希望能够产生一个控制信号使输出部分的锁存器恰好能把移位寄存器的数据存起来,由此我们需要一个计数器,让它在计数第32次产生这个信号。因为是同步电路,所以计数器也需要用同步计数器,我们采用的是带串行使能逻辑的同步五位二进制计数器。电路参考教材逻辑图,如图3-3所示。图3-3 带有串行使能逻辑的同步4位二进制计数器而T触发器可以由D触发器和异或门构成,如图34所示。图3-4 由D触发器实现T触发器逻辑图异或门由式子ABAB*AB=(AB)*(AB)决定。总的电路图如图3-5所示:图3-5 带串行功能的同步5位二进制计数器而要实现32进制计数器,只需把五位输出与起来,当五个D触发器输出为

7、11111时,计数器才会输出1,即可得到需要的控制信号。一开始我们采用的如图图3-6所示电路,图3-6 计数器输出部分电路按这种结构,第五位D触发器的输出所经过的与非门个数少,用示波器测试,出现了静态冒险,如图3-7中所示。该冒险会使得控制信号不准确,需要消除。图3-7 计数器中的静态冒险为此我们在第五个信号的路径上加上了四个与非门后(因为前面四个信号在最后与起来时也只经过了四个与非门),冒险消失了,电路图和仿真波形图如图3-8、3-9所示。图3-8图3-9但是我们希望得到的是当计满32时输出高电平,但该波形图显示的是低电平,回查电路,发现最后少加一个反相器,所以我们就在电路最后加入一个与非门

8、,来实现所需目的。具体电路和波形图如图3-10和图3-11所示 图3-10 图3-11 3、并入串出模块设计 并入串出机构我们参考教材,如图3-12所示。图3-12 并入串出移位寄存器的结构根据图3-12,我们用Multisim搭建了并入串出模块的仿真电路。局部电路如图3-13所示。图3-13 并入串出移位寄存器局部(8位)从图3-11可以看出,当第32个时钟上升沿到来时,计数器的上升沿也到来,并且维持高电平一个时钟周期,等到下一个时钟上升沿到来时,计数器才变为低电平。所以,当计数器上升沿来时,时钟信号的上升沿也到来,将第32位二进制位输出。之后计数器信号为高电平,将拨码开关的信号传输到对应D

9、触发器的输入端。待下一个时钟信号来时,再将D触发器的输入端信号传输到对应D触发器输出端,之后每次时钟上升沿到来时,便产生一次移位,知道移位31次之后在加载信号,依次循环。当开关输入并行信号为10000000100000001000000010000000时,波形图如图3-14所示。图3-14 并行信号10000000100000001000000010000000对应的串行信号波形从图中可以看出,时序与我们分析的相同,满足我们的要求,可以使用。4、运算模块设计运算模块我们使用移位全加器电路来时先,与普通的一位全加器不同之处在于,进位输出接了一个D触发器。电路如图3-15所示。图3-15 运算模

10、块电路当两个加数时钟上升沿来时,一位X、Y输入,同时进位输出端的D触发器也打开,将上一位的进位信号输入到第二个半加器中进行计算,得到本位进位输出和本位和输出。其中本位进位输出传输到D触发器U265A的输入端,等待下一个时钟上升沿的到来,本位和输出传输到串入并出模块的输入端,等待下一一个时钟上升沿的到来。但是从电路我们可以很明显的看到,上一位的进位输出要比X、Y更快来到第二级半加器,存在冒险。为检测是否存在冒险,我们令输入X=1,Y=3,借助示波器查看输出波形,波形如图3-16所示:图3-16 运算模块波形图从图3-16不难看出每当有进位输入是,就会产生冒险。但是,因为时钟周期为1ms,远远大于

11、冒险存在的时长,所以当下一个时钟上升沿到来时,运算模块已经将正确结果稳定地传输到串入并出模块的输入端,并不会影响输出结果。因此,我们在本次设计中,忽略此冒险,认为该模块电路可用。5、串入并出模块设计并入串出结构我们采用D触发器级联的方式,将上一级输出当做下一级的输入。这样的输出结果会随时钟信号的到来而不停地移位,但是我们希望该模块能够稳定输出正确结果,移位过程中,一直保持上一次计算的结果。因此,我们在每个D触发器的输出端再接一个D触发器,与前面时钟信号控制D触发器不同,这些D触发器由计数器的信号控制,当计数器上升沿来时,将D触发器打开,输出当前结果,其余时候D触发器关闭,保持上一个状态的输出。

12、具体电路如图3-17所示。图3-17 串入并出模块电路分析该电路,我们发现,当并入串出模块输出Xi、Yi时,在下一个时钟上升沿到来时,计算结果Si已经传输到串入并出模块的输入端。当下一个时钟上升沿到来时,并入串出模块输出Xi+1、Yi+1,此时Si才串入并出模块的第一个。以此类推,当并入串出模块输出X31、Y31时,计数器信号到来,并入串出模块加载信号,串入并出模块只有S0S31的输出,少输出一位。这与我们所希望的加载信号与输出结果同时进行不符,所以我们要让控制串入并出的计数器信号延迟一个时钟周期,于是我们在该模块的计数器信号输入端接了一个反相器,使得上升沿延迟一个时钟周期,从而实现我们的预期

13、效果,结果仿真,确实能实现结算结果的稳定输出,如图3-18所示。四、总电路的设计X97总电路如图4-1所示。该电路与图2-1所示的加法器整体架构的各模块的位置均相同。其中X97指示灯用来显示计数器是否计满32,当计满32时,指示灯点亮。这就意味着并入串出模块开始加载并行信号,同时串入并出模块也将计算结果稳定输出。因为时钟周期远大于运算模块的传播延时,所以不需要担心新旧两个信号会产生干扰的问题。强调一点,输入与输出由上至下为二进制数最高位到最低位。五、设计总结本次设计中,我们可以实现本次课程设计的要求。在设计过程中,加深了对时序电路的分析与理解。但是这个课程设计也存在一些不足。我们采用的是1KH

14、z的低频时钟信号,远远大于各个器件、模块的延时,因此这个电路对时序的要求不太严格。所以对于在运算模块的冒险我们没有进行处理,但是,一旦频率提高之后,冒险很有可能会被当做一位运算结果输出,使得运算逻辑发生错误。同时若频率过高,可能会出现计算结果还未输出,输入就已经到来的情况,这样也会使得计算结果出现错误。同时,1KHz脉冲发生器模块的在开始的一段时间无法正常起振,得等一段时间才能正常工作,到目前为止,我们还无法分析出原因。本次实验我们本来打算用数码管显示结果对应的十六进制数,译码模块也设计好了,但是因为电脑性能的原因,无法加载到电路中,是个遗憾。以后对电路进行改进时,可以考虑将各模块进行化简,从而减少元件的数量。这样或许能将译码模块加到电路中。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1