
8位减法器的设计.docx
11页8位减法器的设计课题名称 设计内容及要求 设计工作量 8位减法器的设计 试设计一个8位二进制并行减法器,它由两个4位二进制并行减法器级联而成要求被减数与减数之差在数码管上以十进制数显示出来,LED1显示借位输出,当被减数大于减数时,LED1熄灭表示没在借位,当被减数小于减数时,LED1亮表示有借位,其它7位LED平时在熄灭状态系统提供50MHZ频率的时钟源完成该系统的硬件和软件的设计,并制作出实物装置,调试好后并能实际运用,最后就课程设计本身提交一篇课程设计说明书 1、VHDL语言程序设计; 2、波形仿真; 3、在实验装置上进行硬件测试,并进行演示; 4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、硬件测试、调试过程,参考文献、设计总结等 起止日期 第1天 第2天 设计内容 课题介绍,答疑,收集材料 设计方案论证 进一步讨论方案, 对设计方案进行必要的修正,方案确定后开始进行VHDL语言程序设计 设计VHDL语言程序 在实验装置上进行硬件测试,编写设计说明书 编写设计说明书 年 月 日 年 月 日 备注 进度安排 第3天 第4天 第5天 教研室 意见 系主管领导意见 目 录 一、课程设计目的 .............................................................................................................................................. 2 二、课程设计要求 .............................................................................................................................................. 2 三、设计内容 ...................................................................................................................................................... 2 1、设计思路 ................................................................................................................................................ 2 2、设计步骤 ................................................................................................................................................ 3 1)先设计减数和被减数值的锁定并判定借位的输出值 ................................................................ 3 2)设计减法器的基本功能 ................................................................................................................ 3 3)设计计数器的分频操作降低输出频率是结果显示清楚 ............................................................ 4 4)数码管的段选设计 ........................................................................................................................ 4 四、设计仿真波形 .............................................................................................................................................. 5 1)减数被减数值的锁定 ............................................................................................................................ 5 2)数码管片选及段选 ................................................................................................................................ 6 五、程序中各个引脚的分配如下 ...................................................................................................................... 6 六、设计总程序 .................................................................................................................................................. 6 七、设计仿真图 .................................................................................................................................................. 9 八、设计心得及体会 .......................................................................................................................................... 9 参考文献 ............................................................................................................................................................ 10 一、课程设计目的 系统提供一个50MHz的时钟,要求输入一个8位的二进制数作为被减数并锁定,然后再输入一个8位二进制数并锁定,进行相减后的结果用十进制在数码管上显示出来,并用一个led灯来显示借位情况。
二、课程设计要求 试设计一个8位二进制并行减法器,它由两个4位二进制并行减法器级联而成要求被减数与减数之差在数码管上以十进制数显示出来,LED1显示借位输出,当被减数大于减数时,LED1熄灭表示没在借位,当被减数小于减数时,LED1亮表示有借位,其它7位LED平时在熄灭状态系统提供50MHZ频率的时钟源完成该系统的硬件和软件的设计,并制作出实物装置,调试好后并能实际运用,最后就课程设计本身提交一篇课程设计说明书 三、设计内容 1、设计思路 方法一: 由于要设计的是一个8位的二进制减法器,可采用4位减法器并联的例化语句的方法来实现在是用例化语句的过程中需要的就是输入的是8位二进制编码,输出的结果也是二进制编码的形式,所以在输出结果的同时还需要将结果进行转化后才能在数码管显示出来,否则只能用16进制来显示其中的是否发生借位的部分,完全可以用一个输出指向led的亮灭来表示在此过程中数码管的显示还需要设计好动态扫描 方法二; 8位二进制减法器的设计,我们在设置减法器前就先将数据转化,然后再进行减法器的设置,在这里是否要借位可以用if语句来判定后直接输出一个值送入到led显示结果,并把结果直接送入数码管显示。
2 2、设计步骤 1)先设计减数和被减数值的锁定并判定借位的输出值 程序如下: PROCESS(AB,K1,K2) VARIABLE S1,S2:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF K1'EVENT AND K1='1' THEN S1:=AB; END IF; IF K2'EVENT AND K2='1' THEN S2:=AB; END IF; TMP1<=CONV_INTEGER(S1); TMP2<=CONV_INTEGER(S2); IF TMP1>TMP2 THEN TMP<=TMP1-TMP2; FLAG<=10; CO<='0'; ELSE TMP<=TMP2-TMP1; FLAG<=11; CO<='1'; END IF; END PROCESS; 2)设计减法器的基本功能 程序如下: PROCESS(TMP,CLK) VARIABLE A,B,C:INTEGER RANGE 0 TO 9; BEGIN IF CLK'EVENT AND CLK='1' THEN C:=TMP REM 10 ; B:=(TMP-C) REM 100/10; A:=(TMP-B*10-C) REM 1000/100; A1<=A; B1<=B; C1<=C; END IF; 3 END PROCESS; 3)设计计数器的分频操作降低输出频率是结果显示清楚 程序如下: PROCESS(CLK) VARIABLE NUM:INTEGER RANGE 0 TO 50000000; BEGIN IF CLK'EVENT AND CLK='1' THEN IF NUM<100 THEN NUM:=NUM+1; ELSE NUM:=0; CLK1<= NOT CLK1; END IF; END IF; END PROCESS; 3)设计数码管的片选 程序如下: PROCESS(CLK1) BEGIN IF CLK1'EVENT AND CLK1='1' THEN SEL7S<=SEL7S+"01"; END IF; END PROCESS; PROCESS(SEL7S) BEGIN CASE SEL7S IS WHEN "00"=>SEL<="00000001";DISP<=C1; WHEN "01"=>SEL<="00000010";DISP<=B1; WHEN "10"=>SEL<="00000100";DISP<=A1; WHEN "11"=>SEL<="00001000";DISP<=FLAG; WHEN OTHERS =>SEL<="00000000";DISP<=C1; END CASE; END PROCESS; 。












