音乐计算器的设计与实现实验报告选读.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA实验一实验报告一、实验设计思路1、键盘输入状态机设计控制键盘输入的电路分为5个模块:(1)扫描信号电路其状态转换图如下:状态根据扫描频率自动跳转,在S0~S3状态下分别输出0001、1000、0100、0010,该电路的输出用于数码管的选通(接位选线)和键盘信号的检测(接H)。(2)键值信号电路该电路的功能是输出按键对应的值,按键按下时,就跳到键值相应的状态,并输出相应的值。(3)按键信号电路电路的状态转换图如下:当数字按键被按下时,状态跳转到S1并输出高电平,如果不长按键,等一小段时间后,状态会自动回到S0并输出低电平。如果长按键,那么状态会停留在S1处,这样就不会重复地输出按键信号了。(4)运算符号电路状态转换图如下:该电路的功能是记录运算符号,按下符号按键就跳转到相应的状态,S0为初始状态,输出为000,当按下数字键时,任何状态都会跳转回S0;S1、S2、S3、S4和S5分别为加、减、与、或和比较运算对应的状态,输出分别为001、010、011、100、101;S6为按下等号键会跳转到的状态,输出为110。(5)控制电路该电路的功能是选择移位寄存器、得到清零信号。当第一次输出数字是,control选通其中一个移位寄存器;当按下运算符号时,电路跳转到下一个状态,control选通另外一个移位寄存器。清零信号在按下等号键(正常规则下)或在得到运算结果后再次输入时,将移位寄存器的数据和运算符号等清空。2、ALU运算逻辑ALU完成高8位和低8位运算的状态转换图,实际上是Process模块的状态转换图。在设计里,ALU只要求完成8位二进制数的运算,其进位、借位的处理由Process模块执行。状态转换图如下(Process模块程序中的S6、S7是无用的状态,这里不画出):(1)状态含义及跳转条件:S0为初始状态,按下数字键或等号键时,停留在S0;按下运算符号键(下称符号键)时,跳转到S1。在S1状态下,按下数字键或符号键时,停留在S1,并取最后输入的运算符号;按下等号键时,跳转到S2。在S2状态下,按下等号键停留在S2,按下数字键跳转到S1,按下符号键跳转到S5,S5是一个记录运算结果用的状态,在S5会立刻跳转到S3。S3和S4的含义和跳转条件与S1、S2类似,是进行继续运算用的状态。当Reset键被按下时,状态S1~S4都会跳转回状态S0。(2)各状态下的数据输出:S1状态下,输出给ALU模块的数是两个数(记为A、B)的低8位,carry_in根据运算符号设置,加法为0,减法为1。S2状态下,输出给ALU模块的数是A、B的高8位,carry_in则取S1状态时ALU的carry_out。对于状态S3,输出给ALU模块的数变为记录了的运算结果的低8位和新键入的数的低8位,S4则是两个数的高8位,它们的carry_in的设置与S1、S2类似。(3)ALU的进位、借位设置:ALU的进位、借位根据运算符号和前一步的运算结果的正负来判断,运算结果的正负用D1记录。D1的初值为0,当运算结果为非负数时,D1为0,当运算结果为负数时,D1为1。设计的ALU模块是利用补码进行运算的。进行加法运算时,若D1为0,则运算结果的进位和正负判断作通常处理;若D1为1,则对前一步的运算结果取补码再运算,当新的运算结果的符号位为1时,carry_out为1,且carry_in为1时,运算时将加上二进制这其实是向高位借位(符号位为1,说明运算结果为负,所以要借位)。当高8位运算结果的符号位为1时,说明运算结果为负数。进行减法运算时,若D1为0,则借位、结果正负的判断与进行加法运算且D1为1的情况类似,只是carry_out和carry_in的0、1值调转过来。若D1为1,则将补码相加后,在结果不为0的情况下,若符号位为0或者符号位为1但运算结果为0时,carry_out为0,其他情况carry_out为1。符号位为1、运算结果为0是指两个负数的低8位刚好加起来为-256的情况,这个时候应该是有借位的。3、显示模块的控制逻辑显示的功能由Process模块和Seg模块共同实现。其中,Seg模块的功能主要是将运算结果转换为十进制数,并按顺序显示该数的高位、低位。而Process模块的功能则是根据按键的情况选择要显示的数。Process模块的状态转换图已给出,在S0状态下,显示输入的数;在S1状态下,在没有输入新数的情况下,显示原来输入的数,输入后显示新输入的数;在S2状态下,显示运算结果。对于S3、S4,显示的输出类似。对于运算结果的显示,需要根据运算符号和运算结果的正负进行判断。比如,当前一步的结果为非负数,且进行加法运算时,直接显示运算结果;当前一步的结果为非负数,且进行减法运算时,若carry_out为1,则低8位的显示要对运算结果取

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档