EDA课程设计报告.docx

上传人:b****8 文档编号:23571532 上传时间:2023-05-18 格式:DOCX 页数:21 大小:93.88KB
下载 相关 举报
EDA课程设计报告.docx_第1页
第1页 / 共21页
EDA课程设计报告.docx_第2页
第2页 / 共21页
EDA课程设计报告.docx_第3页
第3页 / 共21页
EDA课程设计报告.docx_第4页
第4页 / 共21页
EDA课程设计报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

EDA课程设计报告.docx

《EDA课程设计报告.docx》由会员分享,可在线阅读,更多相关《EDA课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。

EDA课程设计报告.docx

EDA课程设计报告

课程设计报告

 

专业﹕08通信技术

姓名﹕黄福兰

学号﹕0806090119

日期﹕2010年07月10

设计名称﹕时钟与LED彩灯循环的结合

实验器材﹕计算机,EDA试验箱一台

实现功能:

实现正常的时钟功能,并可对其进行调试。

当开关切换时,可实现LED彩灯的循环状态,并可对其进行启动和暂停控制。

设计流程图:

VHDL程序:

一、通用模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT10IS

PORT(CLK1,CLK2,CLK3:

INSTD_LOGIC;

KS1:

INSTD_LOGIC;

KS2:

INSTD_LOGIC;

KEY_IN1:

INSTD_LOGIC;

KEY_IN2:

INSTD_LOGIC;

KEY_IN3:

INSTD_LOGIC;

LED7S:

OUTSTD_LOGIC_VECTOR(6DOWNTO0);

F:

BUFFERSTD_LOGIC_VECTOR(7DOWNTO0);

CBA:

OUTSTD_LOGIC_VECTOR(2DOWNTO0));

END;

ARCHITECTUREoneofCNT10is

SIGNALCNT2:

STD_LOGIC_VECTOR(2DOWNTO0);

SIGNALCNT1:

STD_LOGIC_VECTOR(2DOWNTO0);

SIGNALCNT00:

STD_LOGIC_VECTOR(2DOWNTO0);

SIGNALA:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALCO:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALCR:

STD_LOGIC_VECTOR(1DOWNTO0);

SIGNALP:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALM:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALB:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALT:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALQ:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALQ1:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALQ2:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALJISHU:

STD_LOGIC_VECTOR(4DOWNTO0);

SIGNALTEMP1:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALTEMP2:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALTEMP3:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALCLK20:

STD_LOGIC;

SIGNALCOUT0:

STD_LOGIC;

SIGNALCOUT00:

STD_LOGIC;

SIGNALCOUT10:

STD_LOGIC;

SIGNALCOUT20:

STD_LOGIC;

SIGNALCOUT30:

STD_LOGIC;

SIGNALCOUT40:

STD_LOGIC;

SIGNALJI:

STD_LOGIC;

signalcouNt:

integerrange0to1000;

SIGNALCOUT1:

STD_LOGIC;

SIGNALJN:

STD_LOGIC_VECTOR(1DOWNTO0);

SIGNALCOUT2:

STD_LOGIC;

SIGNALCOUT3:

STD_LOGIC;

SIGNALCOUT4:

STD_LOGIC;

SIGNALCLK00:

STD_LOGIC;

SIGNALKEY_OUT1:

STD_LOGIC;

SIGNALKEY_OUT2:

STD_LOGIC;

SIGNALKEY_OUT3:

STD_LOGIC;

SIGNALCLK4:

STD_LOGIC;

SIGNALCLK22:

STD_LOGIC;

SIGNALD0:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALD1:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALD2:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALD3:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALD4:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALD5:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALD6:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALD7:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALA1:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALA2:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALA3:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALA4:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALA5:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALA6:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALA7:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALA8:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALL:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALcnt8:

STD_LOGIC_VECTOR(2DOWNTO0);

SIGNALCNT:

STD_LOGIC_VECTOR(2DOWNTO0);

BEGIN

PROCESS(KS2,CLK2,JI,CNT8,A,A1,A2,A4,A3,A5,A6,A7,A8,T,P,JN,F,JISHU,TEMP1,TEMP2,TEMP3)--控制LED灯和时钟的切换

BEGIN

CASEKS2IS

WHEN'1'=>CASEJIIS

WHEN'0'=>CLK22<=CLK2;

WHEN'1'=>CLK22<='0';

WHENOTHERS=>CLK22<='0';

ENDCASE;

CASEJNIS

WHEN"00"=>CBA<="000";B(3DOWNTO0)<=T(3DOWNTO0);

WHEN"01"=>CBA<="001";B(3DOWNTO0)<=T(3DOWNTO0);

WHEN"10"=>CBA<="010";B(3DOWNTO0)<=T(3DOWNTO0);

WHENOTHERS=>CBA<="110";B(3DOWNTO0)<=P;

ENDCASE;

CASEJISHUIS

WHEN"00000"=>F<=TEMP1;

WHEN"00001"=>F<=TEMP1;

WHEN"00010"=>F<=TEMP1;

WHEN"00011"=>F<=TEMP1;

WHEN"00100"=>F<=TEMP1;

WHEN"00101"=>F<=TEMP1;

WHEN"00110"=>F<=TEMP1;

WHEN"00111"=>F<=TEMP1;

WHEN"01000"=>F<=TEMP1;

WHEN"01001"=>F<=TEMP2;

WHEN"01010"=>F<=TEMP2;

WHEN"01011"=>F<=TEMP2;

WHEN"01100"=>F<=TEMP2;

WHEN"01101"=>F<=TEMP2;

WHEN"01110"=>F<=TEMP2;

WHEN"01111"=>F<=TEMP2;

WHEN"10000"=>F<=TEMP2;

WHEN"10001"=>F<=TEMP2;

WHEN"10010"=>F<=TEMP3;

WHEN"10011"=>F<=TEMP3;

WHEN"10100"=>F<=TEMP3;

WHEN"10101"=>F<=TEMP3;

WHEN"10110"=>F<=TEMP3;

WHEN"10111"=>F<=TEMP3;

WHEN"11000"=>F<=TEMP3;

WHEN"11001"=>F<=TEMP3;

WHEN"11010"=>F<=TEMP3;

WHENOTHERS=>F<="00000000";

ENDCASE;

WHEN'0'=>CLK22<='0';F<="00000000";B(3DOWNTO0)<="1111";

CASECNT8IS

WHEN"000"=>CBA<="000";B(3DOWNTO0)<=A1(3DOWNTO0);

WHEN"001"=>CBA<="001";B(3DOWNTO0)<=A2(3DOWNTO0);

WHEN"010"=>CBA<="010";B(3DOWNTO0)<=A3(3DOWNTO0);

WHEN"011"=>CBA<="011";B(3DOWNTO0)<=A4(3DOWNTO0);

WHEN"100"=>CBA<="100";B(3DOWNTO0)<=A5(3DOWNTO0);

WHEN"101"=>CBA<="101";B(3DOWNTO0)<=A6(3DOWNTO0);

WHEN"110"=>CBA<="110";B(3DOWNTO0)<=A7(3DOWNTO0);

WHEN"111"=>CBA<="111";B(3DOWNTO0)<=A8(3DOWNTO0);

WHENOTHERS=>CBA<="010";B(3DOWNTO0)<=P;

ENDCASE;

WHENOTHERS=>CLK22<='0';CBA<="010";B(3DOWNTO0)<=P;F<="00000000";B(3DOWNTO0)<="1111";

ENDCASE;

ENDPROCESS;

PROCESS(B)---数字对应数码管的段码

BEGIN

CASEBIS

WHEN"0000"=>LED7S<="0111111";

WHEN"0001"=>LED7S<="0000110";

WHEN"0010"=>LED7S<="1011011";

WHEN"0011"=>LED7S<="1001111";

WHEN"0100"=>LED7S<="1100110";

WHEN"0101"=>LED7S<="1101101";

WHEN"0110"=>LED7S<="1111101";

WHEN"0111"=>LED7S<="0000111";

WHEN"1000"=>LED7S<="1111111";

WHEN"1001"=>LED7S<="1101111";

WHEN"1110"=>LED7S<="1000000";

WHEN"1111"=>LED7S<="0000000";

WHENOTHERS=>LED7S<="0000000";

ENDCASE;

ENDPROCESS;

END;

二、时钟模块

PROCESS(CLK20)--秒个位计数

BEGIN

IFCLK20'EVENTANDCLK20='1'THEN

IFQ(3DOWNTO0)<9

THENQ(3DOWNTO0)<=Q(3DOWNTO0)+1;

COUT0<='0';

ELSEQ(3DOWNTO0)<="0000";

COUT0<='1';

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(COUT00)--秒十位计数

BEGIN

IFCOUT00'EVENTANDCOUT00='1'THEN

IFQ(7DOWNTO4)<5

THENQ(7DOWNTO4)<=Q(7DOWNTO4)+1;

COUT1<='0';

ELSEQ(7DOWNTO4)<="0000";

COUT1<='1';

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(COUT10)--分个位计数

BEGIN

IFCOUT10'EVENTANDCOUT10='1'THEN

IFQ1(3DOWNTO0)<9

THENQ1(3DOWNTO0)<=Q1(3DOWNTO0)+1;

COUT2<='0';

ELSEQ1(3DOWNTO0)<="0000";

COUT2<='1';

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(COUT20)--分十位计数

BEGIN

IFCOUT20'EVENTANDCOUT20='1'THEN

IFQ1(7DOWNTO4)<5

THENQ1(7DOWNTO4)<=Q1(7DOWNTO4)+1;

COUT3<='0';

ELSEQ1(7DOWNTO4)<="0000";

COUT3<='1';

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(COUT30)--小时个位计数

BEGIN

IFCOUT30'EVENTANDCOUT30='1'THEN

IFQ2(7DOWNTO4)<2THEN

IFQ2(3DOWNTO0)<9

THENQ2(3DOWNTO0)<=Q2(3DOWNTO0)+1;

COUT4<='0';

ELSEQ2(3DOWNTO0)<="0000";

COUT4<='1';

ENDIF;

ELSE

IFQ2(3DOWNTO0)<3

THENQ2(3DOWNTO0)<=Q2(3DOWNTO0)+1;

COUT4<='0';

ELSEQ2(3DOWNTO0)<="0000";

COUT4<='1';

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(COUT40)--小时十位计数

BEGIN

IFCOUT40'EVENTANDCOUT40='1'THEN

IFQ2(7DOWNTO4)<2

THENQ2(7DOWNTO4)<=Q2(7DOWNTO4)+1;

ELSEQ2(7DOWNTO4)<="0000";

ENDIF;

ENDIF;

ENDPROCESS

PROCESS(CLK3,KEY_IN1)--按键1去抖动

VARIABLETMP1:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

IFCLK3'EVENTANDCLK3='1'THEN

TMP1(7DOWNTO0):

=TMP1(6DOWNTO0)&KEY_IN1;

IFTMP1="11111111"THEN

KEY_OUT1<='1';

ELSE

KEY_OUT1<='0';

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CLK3,KEY_IN2)--按键2去抖动

VARIABLETMP2:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

IFCLK3'EVENTANDCLK3='1'THEN

TMP2(7DOWNTO0):

=TMP2(6DOWNTO0)&KEY_IN2;

IFTMP2="11111111"THEN

KEY_OUT2<='1';

ELSE

KEY_OUT2<='0';

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(KEY_OUT1)--调时钟对CBA的选择

BEGIN

IFKEY_OUT1'EVENTANDKEY_OUT1='1'THEN

IFCNT<7THEN

CNT<=CNT+1;

ELSECNT<="000";

ENDIF;

ENDIF

ENDPROCESS;

PROCESS(CLK1)---动态扫描的时钟与显示

BEGIN

IFCLK1'EVENTANDCLK1='1'THEN

IFCNT8<7THEN

CNT8<=CNT8+1;

ELSECNT8<="000";

ENDIF;

ENDIF;

ENDPROCESS;

 

PROCESS(CLK1)--0.5秒取反

BEGIN

IFCLK1'EVENTANDCLK1='1'THEN

IF(COUNT=499)THEN

CLK4<=NOTCLK4;

COUNT<=0;

ELSE

COUNT<=COUNT+1;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CLK4,Q,Q1,Q2,P,L)--送闪烁的数

BEGIN

CASECLK4IS

WHEN'1'=>D0<=Q(3DOWNTO0);D1<=Q(7DOWNTO4);D3<=Q1(3DOWNTO0);D4<=Q1(7DOWNTO4);

D6<=Q2(3DOWNTO0);D7<=Q2(7DOWNTO4);D2<=L;D5<=L;

WHEN'0'=>D0<=P;D1<=P;D3<=P;D4<=P;D7<=P;D6<=P;

WHENOTHERS=>D0<=P;D1<=P;D3<=P;D4<=P;D7<=P;D6<=P;D2<=P;D5<=P;

ENDCASE;

ENDPROCESS;

L<="1110";

P<="1111";

PROCESS(KS1,D0,D1,D2,D3,D4,D5,D6,D7,Q,Q1,Q2,CNT,P,KEY_OUT2,CLK2,COUT0,COUT1,COUT2,COUT3,COUT4)--进入调时状态

BEGIN

CASEKS1IS

WHEN'1'=>CASECNTIS

WHEN"000"=>A1(3DOWNTO0)<=D0;A2(3DOWNTO0)<=Q(7DOWNTO4);A3(3DOWNTO0)<=D2;A4(3DOWNTO0)<=Q1(3DOWNTO0);

A5(3DOWNTO0)<=Q1(7DOWNTO4);A6(3DOWNTO0)<=D5;A7(3DOWNTO0)<=Q2(3DOWNTO0);A8(3DOWNTO0)<=Q2(7DOWNTO4);

CLK20<=KEY_OUT2;COUT00<='0';COUT10<='0';COUT20<='0';COUT30<='0';COUT40<='0';

WHEN"001"=>A2(3DOWNTO0)<=D1;A1(3DOWNTO0)<=Q(3DOWNTO0);A3(3DOWNTO0)<=D2;A4(3DOWNTO0)<=Q1(3DOWNTO0);

A5(3DOWNTO0)<=Q1(7DOWNTO4);A6(3DOWNTO0)<=D5;A7(3DOWNTO0)<=Q2(3DOWNTO0);A8(3DOWNTO0)<=Q2(7DOWNTO4);

COUT00<=KEY_OUT2;CLK20<='0';COUT10<='0';COUT20<='0';COUT30<='0';COUT40<='0';

WHEN"010"=>A3(3DOWNTO0)<=D2;A1(3DOWNTO0)<=Q(3DOWNTO0);A2(3DOWNTO0)<=Q(7DOWNTO4);A4(3DOWNTO0)<=Q1(3DOWNTO0);

A5(3DOWNTO0)<=Q1(7DOWNTO4);A6(3DOWNTO0)<=D5;A7(3DOWNTO0)<=Q2(3DOWNTO0);A8(3DOWNTO0)<=Q2(7DOWNTO4);

CLK20<='0';COUT00<='0';COUT10<='0';COUT20<='0';COUT30<='0';

COUT40<='0';

WHEN"011"=>A4(3DOWNTO0)<=D3;A1(3DOWNTO0)<=Q(3DOWNTO0);A2(3DOWNTO0)<=Q(7DOWNTO4);A3(3DOWNTO0)<=D2;

A5(3DOWNTO0)<=Q1(7DOWNTO4);A6(3DOWNTO0)<=D5;A7(3DOWNTO0)<=Q2(3DOWNTO0);A8(3DOWNTO0)<=Q2(7DOWNTO4);

COUT10<=KEY_OUT2;CLK20<='0';COUT00<='0';COUT20<='0';COUT30<='0';COUT40<='0';

WHEN"100"=>A5(3DOWNTO0)<=D4;A1(3DOWNTO0)<=Q(3DOWNTO0);A2(3DOWNTO0)<=Q(7DOWNTO4);A3(3DOWNTO0)<=D2;

A4(3DOWNTO0)<=Q1(3DOWNTO0);A6(3DOWNTO0)<=D5;A7(3DOWNTO0)<=Q2(3DOWNTO0);A8(3DOWNTO0)<=Q2(7DOWNTO4);

COUT20<=KEY_OUT2;CLK20<='0';COUT00<='0';COUT10<='0';COUT30<='0';COUT40<='0';

WHEN"101"=>A6(3DOWNTO0)<=D5;A5(3DOWNTO0)<=Q1(7DOWNTO4);A1(3DOWNTO0)<=Q(3DOWNTO0);A2(3DOWNTO0)<=Q(7DOWNTO4);A3(3DOWNTO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1