您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 电子学课程设计报告 有符号5位整数乘法器设计与制作
哈尔滨工业大学(威海)电子学课程设计报告有符号5位整数乘法器设计与制作姓名:班级:学号:指导教师:一设计指导电子学课程设计(1)课程设计的性质、目的和任务创新精神和实践能力二者之中,实践能力是基础和根本。这是由于创新基于实践、源于实践,实践出真知,实践检验真理。实践活动是创新的源泉,也是人才成长的必由之路。通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。(2)课程设计基本要求掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。(3)课程设计指导教材《基础电子电路设计与实践》国防工业出版社(4)课程设计内容从1---7题目中任选其一完成。(5)报告要求a.设计的性质、目的和任务;b.设计课题要求;c.设计的内容、电路原理和详细的设计过程;d.调试与仿真结果;e.调试中遇到的问题及解决的方法;f.详谈自己的体会、感想、建议。(6)成绩评定成绩评定按照实际完成情况、题目的难度系数、采用的实现方法和手段、功能扩展的创新体现以及报告等多方面综合评定。二设计要求有符号5位整数乘法器设计与制作(难度系数4)设计要求:设计一个两个5位数相乘的乘法器。用发光二极管显示输入数值,用7段显示器显示十进制结果。乘数和被乘数分两次输入。在输入乘数和被乘数时,要求显示十进制输入数据。输入显示和计算结果显示,采用分时显示方式进行,可参见计算器的显示功能。注意,如果除法功能为引用功能模块,则难度系数将按照1到2.5计算。#设计提示(仅供参考):通常表示带符号二进制数时,最高位为“0”表示“+”号,最高位为“1”表示“-”号,例如,01101表示“+1101”,而11101则表示“-1101”。乘法运算通常采用移位相加方法实现,见简略示意图。最终符号则用两个数的最高位采用“异或”逻辑得到。三设计思路在本次课设中使用了模块化程序设计,一共分为输入,led显示,乘法,转换,显示五个模块。先设计好模块的大致作用和输入输出端口,然后进行具体的模块内部程序设计以及仿真,最后进行连线添加管脚和实际调整。四模块具体设计1.输入模块以data[4..0](即程序中的a[4..0])作为数据输入端口,利用mul(乘号)的高低电平来控制依次输入被乘数与乘数,由于符号运算不同于数字运算,且涉及led显示,故选择了符号与数字的分别输出。当mul=0时,输入被乘数,即乘号输入前将被乘数写入;mul=1时,输入乘数。其中使用了寄存器,故引入了clk时钟信号。Ahdl具体程序如下:subdesignshuru(clk,mul,a[4..0]:input;b[3..0],c[3..0]:output;fu1,fu2:output;)variablecheng[3..0]:dff;bcheng[3..0]:dff;d:dff;乘数被乘数移位寄存移位寄存相乘逻辑累加器结果寄存时钟begincheng[].clk=clk;bcheng[].clk=clk;d.clk=clk;ifmul==b0thenbcheng[].d=a[3..0];d.d=a[4];elsebcheng[].d=bcheng[].q;d.d=d.q;fu2=a[4];cheng[].d=a[3..0];endif;b[]=bcheng[].q;c[]=cheng[].q;fu1=d.q;end;波形图如下:以15*(-3)为例模块如下:2.led显示模块将输入模块的输出进行整合输出给led等进行显示,灯亮表示1,灯灭表示0。同时让不使用的led灯不亮。Ahdl具体程序如下:subdesignledxianshi(a[3..0],b[3..0]:input;afu,bfu:input;c[7..0],d[7..0]:output;)beginc[]=b11100000;c[4]=notafu;c[3]=nota[3];c[2]=nota[2];c[1]=nota[1];c[0]=nota[0];d[]=b11100000;d[4]=notbfu;d[3]=notb[3];d[2]=notb[2];d[1]=notb[1];d[0]=notb[0];end;波形图如下:以15*(-3)为例模块如下:3.乘法模块具体计算用普通乘法乘数每一位分别与被乘数相乘再相加的方法,符号运算使用异或,利用mul(即*)和equal(即=)的高低电平控制输出。乘号和等号都为低时输出被乘数在数码管显示,乘号为高等号为低时输出乘数在数码管显示,等号为高时输出乘积在数码管显示。输出都用9位二进制数,第1-8位为数字,第九位是符号。Ahdl具体程序如下:subdesignchengfa(shufu1,shufu2,mul,equal,b[3..0],c[3..0]:input;g[8..0]:output;)variablex1[7..0],x2[7..0],x3[7..0],x4[7..0]:node;beginx1[]=b00000000;x2[]=b00000000;x3[]=b00000000;x4[]=b00000000;x1[3..0]=b[]&c[0];x2[4..1]=b[]&c[1];x3[5..2]=b[]&c[2];x4[6..3]=b[]&c[3];ifequal==b1theng[7..0]=x1[]+x2[]+x3[]+x4[];g[8]=shufu1xorshufu2;elsifmul==b0theng[7..0]=b00000000;g[3..0]=b[3..0];g[8]=shufu1;elseg[7..0]=b00000000;g[3..0]=c[3..0];g[8]=shufu2;endif;end;波形图如下:以15*(-3)为例模块如下:4.转换模块把输入的9位二进制数转换成符号,百位,十位,个位分开显示,每一个都使用8421码表示。判断利用内部程序判断,如百位,如果去掉符号二进制数大于等于200,则百位为2,即b“0010”,二进制数减去200继续判断十位;如果不满足则判断是否大于等于100,是则百位为1,即b“0001”,二进制数减去100继续判断十位;不是则为0,即b“0000”,继续判断十位。十位判断方法类似。个位则可直接写入输出。其间用到了寄存器,就引入了clk信号。Ahdl具体程序如下:subdesignzhuanhuan2(fa[8..0]:input;clk1:input;fuh[7..0]:output;ge[3..0]:output;shi[3..0]:output;bai[3..0]:output;)variablea[7..0]:dff;b[6..0]:dff;fb[7..0]:dff;c[6..0]:dff;begin(a[],b[],fb[],c[]).clk=clk1;fuh[]=b11111101;fuh[1]=notfa[8];a[]=fa[7..0];bai[]=0;shi[]=0;ge[]=0;ifa[]=200thenbai[]=2;fb[]=a[]-200;b[]=fb[6..0];elsifa[]=100thenbai[]=1;fb[]=a[]-100;b[]=fb[6..0];elsebai[]=0;b[]=a[6..0];endif;ifb[]=90thenshi[]=9;c[]=b[]-90;elsifb[]=80thenshi[]=8;c[]=b[]-80;elsifb[]=70thenshi[]=7;c[]=b[]-70;elsifb[]=60thenshi[]=6;c[]=b[]-60;elsifb[]=50thenshi[]=5;c[]=b[]-50;elsifb[]=40thenshi[]=4;c[]=b[]-40;elsifb[]=30thenshi[]=3;c[]=b[]-30;elsifb[]=20thenshi[]=2;c[]=b[]-20;elsifb[]=10thenshi[]=1;c[]=b[]-10;elseshi[]=0;c[]=b[];endif;ge[]=c[3..0];end;波形图如下:以15*(-3)为例模块如下:5.显示模块将8421码转换为7段译码数码管的高低电平Ahdl具体程序如下:subdesignxianshi(h[3..0]:input;i[7..0]:output;)beginifh[]==b0000theni[]=b00000011;endif;ifh[]==b0001theni[]=b10011111;endif;ifh[]==b0010theni[]=b00100101;endif;ifh[]==b0011theni[]=b00001101;endif;ifh[]==b0100theni[]=b10011001;endif;ifh[]==b0101theni[]=b01001001;endif;ifh[]==b0110theni[]=b01000001;endif;ifh[]==b0111theni[]=b00011111;endif;ifh[]==b1000theni[]=b00000001;endif;ifh[]==b1001theni[]=b00001001;endif;end;波形图就此不画了,模块如下:五连图仿真device选中EPM7128SLC84-15,写好试验箱管脚和输入输出进行仿真。波形仿真如下15*(-3)六设计过程中的问题和感受1.寄存器给予赋值后其他寄存器会受到影响,数据会改变,在输入模块中出现过这种问题,存储被乘数的寄存器数据在输入乘数时改变了,最后是通过将被乘数寄存器再次赋值完成了数据保持的要求。2.所选芯片有一定的容量,本次使用的有128个LCs,超出了则无法仿真,本次设计中出现了门电路超出的问题,最后是靠重新整合模块,合并公用模块实现了问题的解决。3.波形图仿真反应了程序是否能够正常运行,使用波形图仿真很重要。如果波形图正确,实际的器件一般不会有逻辑错误。4.实验箱的数码管和led的正极是直接接高电平的,程序控制的是它的负极电平,即给高电平灯灭,给低电平灯亮。第一次实验时出现了应显示“-”,而结果显示“0”的情况,由此得出上述结论。5.该设计能够自动在相乘过程结束时清零,并且可以用用数码管和发光二极管显示所输入的被乘数和乘数,能够很好的完成实验课题的要求。6.在给输入输出分配管脚时,开始由于没有注意程序和数码管段地对应,结果混乱,经仔细检查,后来更正,终于圆满完成要求。七设计总结本次课程设计一共经历了两周的时间,在这两周的学习过程中,不但复习了以前所学的很多知识,例如数码管和发光二极管的知识,还通过此次设计又学习了AHDL语言,和maxplus2软件,并且在该过程中学着自己查找资料,学习语言以及软件应用,并且和其他人探讨学习,扩展了很多实际、有用的知识,让我充分在实践中巩固所学。我想这为以后在学习和使用软硬件方面起到了很大的帮助,也为以后单片机等后续课程的学习打下了基础。取得这样的成果,离不开老师的辛勤指导,在此十分感谢。
本文标题:电子学课程设计报告 有符号5位整数乘法器设计与制作
链接地址:https://www.777doc.com/doc-74899 .html