8位减法器的设计Word下载.docx
《8位减法器的设计Word下载.docx》由会员分享,可在线阅读,更多相关《8位减法器的设计Word下载.docx(14页珍藏版)》请在冰点文库上搜索。
![8位减法器的设计Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/0aab3e23-5dab-4aaf-9e4d-18f5866d0562/0aab3e23-5dab-4aaf-9e4d-18f5866d05621.gif)
系(部)主管领导意见
目录
一、课程设计目的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灯来显示借位情况。
二、课程设计要求
三、设计内容
1、设计思路
方法一:
由于要设计的是一个8位的二进制减法器,可采用4位减法器并联的例化语句的方法来实现。
在是用例化语句的过程中需要的就是输入的是8位二进制编码,输出的结果也是二进制编码的形式,所以在输出结果的同时还需要将结果进行转化后才能在数码管显示出来,否则只能用16进制来显示。
其中的是否发生借位的部分,完全可以用一个输出指向led的亮灭来表示。
在此过程中数码管的显示还需要设计好动态扫描。
方法二;
8位二进制减法器的设计,我们在设置减法器前就先将数据转化,然后再进行减法器的设置,在这里是否要借位可以用if语句来判定后直接输出一个值送入到led显示结果,并把结果直接送入数码管显示。
2、设计步骤
1)先设计减数和被减数值的锁定并判定借位的输出值
程序如下:
PROCESS(AB,K1,K2)
VARIABLES1,S2:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IFK1'
EVENTANDK1='
1'
THEN
S1:
=AB;
ENDIF;
IFK2'
EVENTANDK2='
S2:
TMP1<
=CONV_INTEGER(S1);
TMP2<
=CONV_INTEGER(S2);
IFTMP1>
TMP2THEN
TMP<
=TMP1-TMP2;
FLAG<
=10;
CO<
='
0'
;
ELSE
=TMP2-TMP1;
=11;
ENDPROCESS;
2)设计减法器的基本功能
程序如下:
PROCESS(TMP,CLK)
VARIABLEA,B,C:
INTEGERRANGE0TO9;
IFCLK'
EVENTANDCLK='
C:
=TMPREM10;
B:
=(TMP-C)REM100/10;
A:
=(TMP-B*10-C)REM1000/100;
A1<
=A;
B1<
=B;
C1<
=C;
3)设计计数器的分频操作降低输出频率是结果显示清楚
PROCESS(CLK)
VARIABLENUM:
INTEGERRANGE0TO50000000;
IFCLK'
IFNUM<
100THEN
NUM:
=NUM+1;
ELSE
=0;
CLK1<
=NOTCLK1;
ENDIF;
3)设计数码管的片选
PROCESS(CLK1)
IFCLK1'
EVENTANDCLK1='
SEL7S<
=SEL7S+"
01"
PROCESS(SEL7S)
CASESEL7SIS
WHEN"
00"
=>
SEL<
="
00000001"
DISP<
=C1;
00000010"
=B1;
10"
00000100"
=A1;
11"
00001000"
=FLAG;
WHENOTHERS=>
00000000"
ENDCASE;
4)数码管的段选设计
PROCESS(DISP)BEGIN
CASEDISPIS
WHEN0=>
LED7S<
0000001"
WHEN1=>
1001111"
WHEN2=>
0010010"
WHEN3=>
0000110"
WHEN4=>
1001100"
WHEN5=>
0100100"
WHEN7=>
0001111"
WHEN8=>
0000000"
WHEN9=>
0000100"
WHEN10=>
1111111"
WHEN11=>
1111110"
WHENOTHERS=>
NULL;
END;
四、设计仿真波形
1)减数被减数值的锁定
图4-1值的锁定仿真图
2)数码管片选及段选
图4-2结果的显示仿真图
五、程序中各个引脚的分配如下
引脚名称
引脚编号
连接网络
AB[0]
M3
FPGA_M1
SEL[0]
G4
E_7SEG-A1
AB[1]
M4
FPGA_M2
SEL[1]
G3
E_7SEG-A2
AB[2]
N1
FPGA_M3
SEL[2]
E2
E_7SEG-A3
AB[3]
N2
FPGA_M4
SEL[3]
F2
E_7SEG-A4
AB[4]
N3
FPGA_M5
LED7S[0]
K4
E_7SEG-G
AB[5]
N4
FPGA_M6
LED7S[1]
L2
E_7SEG-F
AB[6]
R1
FPGA_M7
LED7S[2]
H1
E_7SEG-E
AB[7]
P3
FPGA_M8
LED7S[3]
H4
E_7SEG-D
K1
T10
KEY1
LED7S[4]
H3
E_7SEG-C
K2
N14
KEY2
LED7S[5]
L4
E_7SEG-B
CO
R10
LED1
LED7S[6]
L3
E_7SEG-A
CLK
J3
50MHZ
六、设计总程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYa8jfqIS
PORT(
CLK,K1,K2:
INSTD_LOGIC;
AB:
INSTD_LOGIC_VECTOR(7DOWNTO0);
SEL:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED7S:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
CO:
OUTSTD_LOGIC
);
ARCHITECTUREONEOFa8jfqIS
SIGNALA1,B1,C1:
SIGNALFLAG,DISP:
INTEGERRANGE0TO15;
SIGNALTMP1,TMP2,TMP:
INTEGERRANGE0TO255;
SIGNALCLK1:
STD_LOGIC;
SIGNALSEL7S:
STD_LOGIC_VECTOR(1DOWNTO0):
BEGIN
PROCESS(TMP,CLK)
PROCESS(CLK)
PROCESS(DISP)BEGIN
七、设计仿真图
八、设计心得及体会
经过本次课程设计通过本次设计对FPGA有了进一步的了解,在这次课程设计的过程中设计的2套方案只是先了一套有点遗憾,第一条方案在之前的过程的设计过程中都是正常的而且仿真也是没有问题,就是在进行实物显示是一致是乱码,也没有在课程设计结束前解决。
只能是另外想办法,通过别的思路和设计来实现该功能。
在谢老师的帮助下通过自己网上找资料终于实现了预期的功能,本次课程设计学到了许多东西。
期待下次能实现更多的功能。
参考文献
【1】潘松,王国栋.VHDL使用教程.成都:
电子科技大学出版社,2000
【2】潘松,王国栋EDA技术实用教程—VHDL版(第五版)北京:
科技出版社,2013
【3】蒋国强.EDA技术与应用.北京:
电子工业出版社,2007