课题名称8位减法器的设计设计内容及要求试设计一个8位二进制并行减法器,它由两个4位二进制并行减法器级联而成。要求被减数与减数之差在数码管上以十进制数显示出来,LED1显示借位输出,当被减数大于减数时,LED1熄灭表示没在借位,当被减数小于减数时,LED1亮表示有借位,其它7位LED平时在熄灭状态。系统提供50MHZ频率的时钟源。完成该系统的硬件和软件的设计,并制作出实物装置,调试好后并能实际运用(指导教师提供制作所需的器件),最后就课程设计本身提交一篇课程设计说明书。设计工作量1、VHDL语言程序设计;2、波形仿真;3、在实验装置上进行硬件测试,并进行演示;4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、硬件测试、调试过程,参考文献、设计总结等。进度安排起止日期(或时间量)设计内容(或预期目标)备注第1天课题介绍,答疑,收集材料第2天设计方案论证第3天进一步讨论方案,对设计方案进行必要的修正,方案确定后开始进行VHDL语言程序设计第4天设计VHDL语言程序第5天在实验装置上进行硬件测试,编写设计说明书编写设计说明书教研室意见年月日系(部)主管领导意见年月日目录一、课程设计目的..............................................................................................................................................2二、课程设计要求..............................................................................................................................................2三、设计内容......................................................................................................................................................21、设计思路................................................................................................................................................22、设计步骤................................................................................................................................................31)先设计减数和被减数值的锁定并判定借位的输出值................................................................32)设计减法器的基本功能................................................................................................................33)设计计数器的分频操作降低输出频率是结果显示清楚............................................................44)数码管的段选设计........................................................................................................................4四、设计仿真波形..............................................................................................................................................51)减数被减数值的锁定............................................................................................................................52)数码管片选及段选................................................................................................................................6五、程序中各个引脚的分配如下......................................................................................................................6六、设计总程序..................................................................................................................................................6七、设计仿真图..................................................................................................................................................9八、设计心得及体会..........................................................................................................................................9参考文献............................................................................................................................................................102一、课程设计目的系统提供一个50MHz的时钟,要求输入一个8位的二进制数作为被减数并锁定,然后再输入一个8位二进制数并锁定,进行相减后的结果用十进制在数码管上显示出来,并用一个led灯来显示借位情况。二、课程设计要求试设计一个8位二进制并行减法器,它由两个4位二进制并行减法器级联而成。要求被减数与减数之差在数码管上以十进制数显示出来,LED1显示借位输出,当被减数大于减数时,LED1熄灭表示没在借位,当被减数小于减数时,LED1亮表示有借位,其它7位LED平时在熄灭状态。系统提供50MHZ频率的时钟源。完成该系统的硬件和软件的设计,并制作出实物装置,调试好后并能实际运用(指导教师提供制作所需的器件),最后就课程设计本身提交一篇课程设计说明书。三、设计内容1、设计思路方法一:由于要设计的是一个8位的二进制减法器,可采用4位减法器并联的例化语句的方法来实现。在是用例化语句的过程中需要的就是输入的是8位二进制编码,输出的结果也是二进制编码的形式,所以在输出结果的同时还需要将结果进行转化后才能在数码管显示出来,否则只能用16进制来显示。其中的是否发生借位的部分,完全可以用一个输出指向led的亮灭来表示。在此过程中数码管的显示还需要设计好动态扫描。方法二;8位二进制减法器的设计,我们在设置减法器前就先将数据转化,然后再进行减法器的设置,在这里是否要借位可以用if语句来判定后直接输出一个值送入到led显示结果,并把结果直接送入数码管显示。32、设计步骤1)先设计减数和被减数值的锁定并判定借位的输出值程序如下:PROCESS(AB,K1,K2)VARIABLES1,S2:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFK1'EVENTANDK1='1'THENS1:=AB;ENDIF;IFK2'EVENTANDK2='1'THENS2:=AB;ENDIF;TMP1=CONV_INTEGER(S1);TMP2=CONV_INTEGER(S2);IFTMP1TMP2THENTMP=TMP1-TMP2;FLAG=10;CO='0';ELSETMP=TMP2-TMP1;FLAG=11;CO='1';ENDIF;ENDPROCESS;2)设计减法器的基本功能程序如下:PROCESS(TMP,CLK)VARIABLEA,B,C:INTEGERRANGE0TO9;BEGINIFCLK'EVENTANDCLK='1'THENC:=TMPREM10;B:=(TMP-C)REM100/10;A:=(TMP-B*10-C)REM1000/100;A1=A;B1=B;C1=C;ENDIF;4ENDPROCESS;3)设计计数器的分频操作降低输出频率是结果显示清楚程序如下:PROCESS(CLK)VARIABLENUM:INTEGERRANGE0TO50000000;BEGINIFCLK'EVENTANDCLK='1'THENIFNUM100THENNUM:=NUM+1;ELSENUM:=0;CLK1=NOTCLK1;ENDIF;ENDIF;ENDPROCESS;3)设计数码管的片选程序如下:PROCESS(CLK1)BEGINIFCLK1'EVENTANDCLK1='1'THENSEL7S=SEL7S+01;ENDIF;ENDPROCESS;PROCESS(SEL7S)BEGINCASESEL7SISWHEN00=SEL=00000001;DISP=C1;WHEN01=SEL=00000010;DISP=B1;WHEN10=SEL=00000100;DISP=A1;WHEN11=SEL=00001000;DISP=FLAG;WHENOTHERS=SEL=00000000;DISP=C1;ENDCASE;ENDPROCESS;4)数码管的段选设计程序如下:PROCESS(DISP)BEGINCASEDISPIS5WHEN0=LED7S=0000001;WHEN1=LED7S=1001111;WHEN2=LED7S=0010010;WHEN3=LED7S=0000110;WHEN4=LED7S=1001100;WHEN5=LED7S=0100100;WHEN7=LED7S=0001111;WHEN8=LED7S=0000000;WHEN9=LED7S=0000100;WHEN10=LED7S=1111111;WHEN11=LED7S=1111110;WHENOTHERS=NULL;ENDCASE;ENDPROCESS;END;四、设计仿真波形1)减数被减数值的锁定图4-1值的锁定仿真图62)数码管片选及段选图4-2结果的显示仿真图五、程序中各个引脚的分配如下引脚名称引脚编号连接网络引脚名称引脚编号连接网络AB[0]M3FPGA_M1SEL[0]G4E_7SEG-A1AB[1]M4FPGA_M2SEL[1]G3E_7SEG-A2AB[2]N1FPGA_M3SEL[2]E2E_7SEG-A3AB[3