EDA課程設(shè)計(jì)畢業(yè)課程設(shè)計(jì)
《EDA課程設(shè)計(jì)畢業(yè)課程設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《EDA課程設(shè)計(jì)畢業(yè)課程設(shè)計(jì)(20頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 課程設(shè)計(jì)說明書 NO. 20 設(shè)計(jì)題目:搶答器的設(shè)計(jì)與仿真 一.課程設(shè)計(jì)的目的 EDA課程設(shè)計(jì)是電子信息科學(xué)與技術(shù)專業(yè)開設(shè)的一門獨(dú)立實(shí)踐環(huán)節(jié)課程。通過課程設(shè)計(jì)使學(xué)生具體掌握將理論知識(shí)與實(shí)際應(yīng)用相結(jié)合的方法,提高分析問題和解決問題的能力,激發(fā)學(xué)習(xí)興趣、鍛煉動(dòng)手能力和科研能力。了解CPLD為復(fù)雜可編程邏輯器件,通過EDA技術(shù)對(duì)其進(jìn)行編程,可將一個(gè)較復(fù)雜的數(shù)字系統(tǒng)集成于一個(gè)芯片中,制成專用集成電路芯片,并可隨時(shí)在系統(tǒng)修改其邏輯功能。 二.設(shè)計(jì)方案論證 1. 設(shè)計(jì)原理 搶答器原理是根據(jù)所要設(shè)計(jì)的系統(tǒng)功能,將整個(gè)系統(tǒng)劃分成
2、幾個(gè)主要模塊,再將每個(gè)模塊細(xì)分成幾個(gè)子模塊,直到最底層的小模塊容易編程實(shí)現(xiàn)為止。只需對(duì)底層元件編程實(shí)現(xiàn),最后將各模塊連接起來組成所需的系統(tǒng)。 對(duì)于一個(gè)搶答器系統(tǒng),可將其分為五個(gè)模塊:選手搶答模塊、搶答啟動(dòng)模塊、加減分模塊、顯示模塊、蜂鳴器控制模塊,整體框圖如圖(1)所示。 圖(1)總體框圖 其中搶答啟動(dòng)模塊具有啟動(dòng)搶答及啟動(dòng)定時(shí)功能,輸出使能信號(hào)給選手識(shí)別模塊,以及搶答剩余時(shí)間給顯示模塊;選手識(shí)別模塊完成鎖存搶答信號(hào)的功能,并輸出選手號(hào)給顯示模塊;蜂鳴器對(duì)搶答成功以及超時(shí)鳴聲報(bào)警;顯示模塊對(duì)輸入的數(shù)據(jù)進(jìn)行顯示。 2. 設(shè)計(jì)內(nèi)容 (
3、1)設(shè)計(jì)一智力競(jìng)賽搶答器,可同時(shí)供8名選手參加比賽。 (2)給節(jié)目主持人設(shè)置一個(gè)控制開關(guān),控制系統(tǒng)清零和搶答開始。 (3)搶答器具有鎖存功能和顯示功能。搶答開始后,若有選手按動(dòng)搶答按鈕,編號(hào)立即鎖存,并在LED數(shù)碼管上顯示選手編號(hào),同時(shí)揚(yáng)聲器響,禁止其他選手搶答。 (4)搶答器具有搶答定時(shí)功能,時(shí)間由主持人確定。 (5)參賽選手在設(shè)定的時(shí)間內(nèi)搶答有效,定時(shí)器停止工作。 (6)如果定時(shí)時(shí)間到,無人搶答,本次搶答無效,系統(tǒng)報(bào)警,并封鎖輸入電路,禁止超時(shí)搶答,定時(shí)器顯示00 。 (7)為每組設(shè)計(jì)一個(gè)計(jì)分電路,0~999分,可加分,也可減分。 3. 設(shè)計(jì)整體原理圖
4、 圖(2)設(shè)計(jì)原理圖 三.設(shè)計(jì)結(jié)果與分析 1、搶答啟動(dòng)模塊 啟動(dòng)模塊除了有啟動(dòng)的功能外,還有啟動(dòng)定時(shí)的功能。定時(shí)時(shí)間分為5秒和20秒兩種,使用兩個(gè)按鍵對(duì)應(yīng)兩種限時(shí)搶答。 將本模塊再劃分為2個(gè)子模:一個(gè)模塊完成按鍵識(shí)別的功能,另一模塊完成倒計(jì)時(shí)功能。 (1)按鍵識(shí)別子模塊 按鍵的識(shí)別即對(duì)輸入信號(hào)進(jìn)行電平變化檢測(cè),電平發(fā)生跳變就認(rèn)為是鍵被按下。但VHDL程序中一個(gè)結(jié)構(gòu)體內(nèi)不能同時(shí)對(duì)兩個(gè)信號(hào)進(jìn)行電平跳變的檢測(cè),所以對(duì)本模塊的程序設(shè)計(jì)采用狀態(tài)機(jī)來實(shí)現(xiàn),并使用統(tǒng)一的時(shí)鐘信號(hào)來掃描按鍵的電平狀態(tài)。模塊如圖(3)所示。 圖(3)按鍵識(shí)別子模塊 對(duì)START
5、5和START20兩個(gè)按鍵定義三種狀態(tài),START5按下為ST1狀態(tài),此時(shí)兩個(gè)按鍵“START5&START20”輸入電平為“01”;START20按下為ST2狀態(tài),此時(shí)電平為“10”;兩個(gè)都沒按下為ST0狀態(tài),此時(shí)電平為“11”。狀態(tài)轉(zhuǎn)換圖如圖(4)所示。 圖(4)按鍵識(shí)別子模塊狀態(tài)轉(zhuǎn)換圖 本模塊程序?yàn)椋? LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY START_5_20 IS PORT(CLK1,RST,START5,START20:IN S
6、TD_LOGIC; B,A:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_FLAG:OUT STD_LOGIC); END ENTITY; ARCHITECTURE ONE OF START_5_20 IS SIGNAL DATAIN:STD_LOGIC_VECTOR(1 DOWNTO 0); TYPE ST_TYPE IS (ST0,ST1,ST2); SIGNAL C_ST:ST_TYPE; BEGIN DATAIN<=START5&START20;
7、 PROCESS(RST,CLK1) BEGIN IF RST=0 THEN B<="0000";A<="0000";C_ST<=ST0;S_FLAG<=0; ELSIF CLK1EVENT AND CLK1=1 THEN CASE C_ST IS WHEN ST0=> IF DATAIN="01" THEN C_ST<=ST1; S_FLAG<=1; B<="0000";A<="0101"; ELSIF
8、 DATAIN="10" THEN C_ST<=ST2; S_FLAG<=1; B<="0011";A<="0000"; ELSE C_ST<=ST0; END IF; WHEN ST1=>IF DATAIN="11" THEN C_ST<=ST0; S_FLAG<=0; ELSE C_ST<=ST1; END IF;
9、 WHEN ST2=>IF DATAIN="11" THEN C_ST<=ST0;S_FLAG<=0; ELSE C_ST<=ST2; END IF; WHEN OTHERS=>C_ST<=ST0;B<="0000";A<="0000"; END CASE; END IF; END PROCESS; END ARCHITECTURE; 本模塊仿真波形如圖(5)所示。 圖(5)按鍵識(shí)別子模塊仿真波形 (2)倒計(jì)時(shí)子模塊 倒計(jì)時(shí)需要1Hz的脈沖輸入,每來一個(gè)上升沿,進(jìn)行一次減一
10、運(yùn)算,將結(jié)果輸出到TIMEB、TIMEA;置數(shù)信號(hào)LOAD輸入有效,讀入B、A端口的數(shù)據(jù);輸入L_CR信號(hào)與選手識(shí)別模塊連接,當(dāng)選手搶答成功后,L_CR信號(hào)為0,將倒計(jì)時(shí)清0.;若倒計(jì)時(shí)到,沒有選手搶答,則在SR1輸出1使揚(yáng)聲器發(fā)聲。同時(shí)輸出信號(hào)給選手搶答模塊,禁止選手搶答如圖(6)所示。 圖(6)倒計(jì)時(shí)模塊 本模塊程序?yàn)椋? LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DE_COUNT IS PORT(CLK2,LOAD,L_CR,RST:IN STD_
11、LOGIC; B,A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); TIMEB,TIMEA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); TIMEOUT,SR1:OUT STD_LOGIC); END ENTITY; ARCHITECTURE TWO OF DE_COUNT IS BEGIN PROCESS(LOAD,L_CR,RST,CLK2) VARIABLE P1,P0:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF LOAD=1 THEN P1:=B;P0:=A
12、; ELSIF L_CR=0 THEN P1:="0000";P0:="0000";TIMEOUT<=0;SR1<=1; ELSIF RST=0 THEN P1:="0000";P0:="0000";TIMEOUT<=0;SR1<=0; ELSIF (CLK2EVENT AND CLK2=1) THEN IF P0="0000" THEN IF P1>0 THEN P1:=P1-1;P0:="1001"; END IF; ELSE P0:=P0-1;
13、 IF P0="0000" AND P1="0000" THEN TIMEOUT<=0;SR1<=1; END IF; END IF; END IF; TIMEB<=P1;TIMEA<=P0; END PROCESS; END ARCHITECTURE; 程序中,因?yàn)槊看螠p一后的時(shí)間值需要保存,用于下次繼續(xù)減一,所以程序中使用了不完整的IF語句引入寄存器,用于保存每次減一后的時(shí)間值。P1、P0定義為變量而不是信號(hào)的原因是,變量的賦值是即時(shí)的,減一后可以馬上進(jìn)行判斷;若定義為信號(hào),不能即時(shí)進(jìn)行判斷,
14、并且減一操作后的賦值要經(jīng)過一個(gè)δ延時(shí),程序不好控制。 本模塊仿真波形如圖(7)所示: 圖(7)倒計(jì)時(shí)模塊仿真波形 兩個(gè)子模塊組合的程序?yàn)椋? LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY STARTER IS PORT(CLK1,CLK2,L_CR,RST,START5,START20:IN STD_LOGIC; TIMEB,TIMEA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
15、 TIMEOUT,SR1:OUT STD_LOGIC); END ENTITY; ARCHITECTURE THREE OF STARTER IS COMPONENT START_5_20 IS PORT(CLK1,RST,START5,START20:IN STD_LOGIC; B,A:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); S_FLAG:OUT STD_LOGIC); END COMPONENT; COMPONENT DE_COUNT IS PO
16、RT(CLK2,LOAD,L_CR,RST:IN STD_LOGIC; B,A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); TIMEB,TIMEA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); TIMEOUT,SR1:OUT STD_LOGIC); END COMPONENT; SIGNAL m,n:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL p:STD_LOGIC; BEGIN U1:START_5
17、_20 PORT MAP(CLK1=>CLK1,START5=>START5,START20=>START20, RST=>RST,B=>m,A=>n,S_FLAG=>p); U2:DE_COUNT PORT MAP(CLK2=>CLK2,B=>m,A=>n,LOAD=>p,RST=>RST, L_CR=>L_CR,TIMEB=>TIMEB,TIMEA=>TIMEA, TIMEOUT=>TIMEOUT,SR1=>SR1); END ARCHITECTURE; 2、選手搶答模塊 在一個(gè)結(jié)構(gòu)體中用8個(gè)進(jìn)程同時(shí)對(duì)8個(gè)選手按鍵電平變化的監(jiān)測(cè)是不可實(shí)現(xiàn)的,所以將本模塊劃分為兩個(gè)子模塊:?jiǎn)?/p>
18、個(gè)選手按鍵模塊和判斷搶答選手模塊。最后將8個(gè)選手按鍵模塊和1個(gè)判斷搶答選手模塊連接起來,得到整個(gè)選手搶答模塊。 (1)單個(gè)選手按鍵子模塊 按鍵輸入相當(dāng)于該實(shí)體的時(shí)鐘信號(hào),鍵被按下,等于來一個(gè)脈沖,輸出信號(hào)給判斷模塊進(jìn)行選手號(hào)的判斷。只要有選手搶答成功,相關(guān)模塊會(huì)輸出信號(hào)使8個(gè)按鍵模塊的LOCK信號(hào)有效,禁止其他選手搶答。如圖(8)所示。 圖(8)單個(gè)選手按鍵子模塊 本模塊程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY BUTTON1 IS PORT(LOCK ,
19、 BUTTON , RST :IN STD_LOGIC; PRESSED:OUT STD_LOGIC); END ENTITY; ARCHITECTURE B1 OF BUTTON1 IS BEGIN PROCESS(RST , BUTTON) BEGIN IF RST=0 THEN PRESSED<=0; ELSIF BUTTONEVENT AND BUTTON=0 THEN IF LOCK=1 THEN PRESSED<=1;
20、 END IF; END IF; END PROCESS; END ARCHITECTURE; 單個(gè)選手模塊仿真波形如圖(9)所示。 圖(9)單個(gè)選手按鍵子模塊仿真波形 (2)判斷搶答選手子模塊 本子模塊接收8個(gè)按鍵子模塊的輸出信號(hào),如收到1號(hào)子模塊輸出的高電平,則輸出選手號(hào)“0001”;并發(fā)出信號(hào)使揚(yáng)聲器發(fā)聲并控制8個(gè)按鍵子模塊使它們的LOCK信號(hào)有效,禁止其他選手搶答。本子模塊端口設(shè)置如圖(10)所示。 圖(10)判斷選手模塊 本子模塊程序如下: LIBRARY IEEE; USE IEEE.ST
21、D_LOGIC_1164.ALL; ENTITY IDENTIFIER IS PORT(PP1,PP2,PP3,PP4,PP5,PP6,PP7,PP8:IN STD_LOGIC; P_NUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); LOCK,SR1:OUT STD_LOGIC); END ENTITY; ARCHITECTURE ONE OF IDENTIFIER IS SIGNAL P:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN P<=PP8&PP7&PP6&PP5&PP4&PP3&PP2&PP1
22、; PRO1:PROCESS(P) BEGIN CASE P IS WHEN "00000001"=>P_NUM<="0001";LOCK<=0;SR1<=1; WHEN "00000010"=>P_NUM<="0010";LOCK<=0;SR1<=1; WHEN "00000100"=>P_NUM<="0011";LOCK<=0;SR1<=1; WHEN "00001000"=>P_NUM<="0100";LOCK<=0;SR1<=1; WHEN "00010000"=>P_NUM<="01
23、01";LOCK<=0;SR1<=1; WHEN "00100000"=>P_NUM<="0110";LOCK<=0;SR1<=1; WHEN "01000000"=>P_NUM<="0111";LOCK<=0;SR1<=1; WHEN "10000000"=>P_NUM<="1000";LOCK<=0;SR1<=1; WHEN OTHERS=>P_NUM<="0000";LOCK<=1;SR1<=0; END CASE; END PROCESS; END ARCHITECTURE; 圖(11
24、)判斷搶答選手模塊仿真波形 所以將以上兩個(gè)子模塊用元件例化語句連接起來,組成整個(gè)選手搶答模塊,如圖(12)所示。 圖(12)選手搶答模塊 實(shí)現(xiàn)程序?yàn)椋? LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY BUTTON IS PORT(P1,P2,P3,P4,P5,P6,P7,P8,RST,LOCK:IN STD_LOGIC; P_NUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); LOCK_S,SR1:OUT STD_LOGIC); END EN
25、TITY; ARCHITECTURE BB1 OF BUTTON IS COMPONENT BUTTON1 IS PORT(LOCK,B,RST:IN STD_LOGIC; PRESSED:OUT STD_LOGIC); END COMPONENT; COMPONENT IDENTIFIER IS PORT(PP1,PP2,PP3,PP4,PP5,PP6,PP7,PP8:IN STD_LOGIC; P_NUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); LOCK,SR1:O
26、UT STD_LOGIC); END COMPONENT; SIGNAL a1,a2,a3,a4,a5,a6,a7,a8:STD_LOGIC; BEGIN U1:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P1,RST=>RST,PRESSED=>a1); U2:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P2,RST=>RST,PRESSED=>a2); U3:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P3,RST=>RST,PRESSED=>a3)
27、; U4:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P4,RST=>RST,PRESSED=>a4); U5:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P5,RST=>RST,PRESSED=>a5); U6:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P6,RST=>RST,PRESSED=>a6); U7:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P7,RST=>RST,PRESSED=>a7); U8:BUTTON1 PORT MAP(LOCK=>LOCK,B=>P8,RST=>RST,PR
28、ESSED=>a8); U9:IDENTIFIER PORT MAP(PP1=>a1,PP2=>a2,PP3=>a3,PP4=>a4,PP5=>a5,PP6=>a6, PP7=>a7,PP8=>a8,P_NUM=>P_NUM,LOCK=>LOCK_S,SR1=>SR1); END ARCHITECTURE; 3.分?jǐn)?shù)選擇輸出模塊 四組分?jǐn)?shù)要顯示出來,需要12個(gè)7段數(shù)碼管。若只顯示當(dāng)前搶答成功選手的分?jǐn)?shù),則只需3個(gè)數(shù)碼管。所以設(shè)置一個(gè)分?jǐn)?shù)選擇器,根據(jù)搶答成功的選手編號(hào),選擇其分?jǐn)?shù)輸出給顯示模塊顯示。 設(shè)計(jì)源程序?yàn)椋? LIBRARY IEEE;
29、USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MUXX IS PORT(P_NUM,AA2,AA1,AA0,BB2,BB1,BB0:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CC2,CC1,CC0,DD2,DD1,DD0:IN STD_LOGIC_VECTOR(3 DOWNTO 0); D2,D1,D0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END ENTITY; ARCHITECTURE ONE OF MUXX IS
30、 BEGIN PROCESS(P_NUM) BEGIN CASE P_NUM IS WHEN "0001"=>D2<=AA2;D1<=AA1;D0<=AA0; WHEN "0010"=>D2<=AA2;D1<=AA1;D0<=AA0; WHEN "0011"=>D2<=BB2;D1<=BB1;D0<=BB0; WHEN "0100"=>D2<=BB2;D1<=BB1;D0<=BB0; WHEN "0101"=>D2<=CC2;D1<=CC1;D0<=CC0; WHEN "0110"=>D2<=CC2;D1<=CC1;D0
31、<=CC0; WHEN "0111"=>D2<=DD2;D1<=DD1;D0<=DD0; WHEN "1000"=>D2<=DD2;D1<=DD1;D0<=DD0; WHEN OTHERS=>D2<="0000";D1<="0000";D0<="0000"; END CASE; END PROCESS; END ARCHITECTURE; 仿真波形如圖(13)所示。 圖(13)分?jǐn)?shù)選擇輸出模塊仿真波形 4.顯示模塊 本模塊根據(jù)送來的數(shù)據(jù):搶答成功選手號(hào),選手分?jǐn)?shù)、倒計(jì)時(shí)時(shí)間,將相應(yīng)的字形碼送數(shù)
32、碼管顯示。端口設(shè)置如圖(14)所示。 該圖中,BT為數(shù)碼管的位選信號(hào),SG為數(shù)碼管的段選信號(hào)。另外圖20為數(shù)碼管的分配。左起第一位為選手編號(hào),第3、4位為該選手的分?jǐn)?shù),最后兩位為倒計(jì)時(shí)。 圖(14)顯示模塊 設(shè)計(jì)程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DISPLAY IS PORT(CLK:IN STD_LOGIC; SCORE2,SCORE1,SCORE0,P_NUMBER,TIMEB,TIMEA:IN STD_LOGIC
33、_VECTOR(3 DOWNTO 0); BT,SG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY; ARCHITECTURE ONE OF DISPLAY IS SIGNAL CNT8:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL A:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN P1:PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN CNT8<=CNT8+1; END IF; END
34、PROCESS; P2:PROCESS(CNT8) BEGIN CASE CNT8 IS WHEN "000"=>BT<="10000000";A<=P_NUMBER; WHEN "001"=>BT<="01000000";A<="1010"; WHEN "010"=>BT<="00100000";A<=SCORE2; WHEN "011"=>BT<="00010000";A<=SCORE1; WHEN "100"=>BT<="00001000";A<=SCORE0; WHEN "101"=>BT
35、<="00000100";A<="1010"; WHEN "110"=>BT<="00000010";A<=TIMEB; WHEN "111"=>BT<="00000001";A<=TIMEA; END CASE; END PROCESS; P3:PROCESS(A) BEGIN CASE A IS WHEN "0000"=>SG<="00111111";WHEN "0001"=>SG<="00000110"; WHEN "0010"=>SG<="01011011";WHEN "0011"=
36、>SG<="01001111"; WHEN "0100"=>SG<="01100110";WHEN "0101"=>SG<="01101101"; WHEN "0110"=>SG<="01111101";WHEN "0111"=>SG<="00000111"; WHEN "1000"=>SG<="01111111";WHEN "1001"=>SG<="01101111"; WHEN "1010"=>SG<="00000000";WHEN OTHERS=>NULL; END CASE; END PROCESS; END ARCHITECTURE
37、; 本模塊仿真波形如圖(15)所示。 圖(15)顯示模塊仿真波形 5.蜂鳴器模塊 當(dāng)SR1鳴聲信號(hào)來時(shí),輸出CLK2(2KHz)驅(qū)動(dòng)蜂鳴器發(fā)聲。CLK1用于掃描SR1的電平變化,SR1上升沿來到,允許CLK2輸出,并持續(xù)一段時(shí)間。模塊如圖(16)所示。 圖(16)蜂鳴器模塊 本模塊程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SPEAKER IS PORT(CLK1,SR1,CLK2:
38、IN STD_LOGIC; S:OUT STD_LOGIC); END ENTITY; ARCHITECTURE ONE OF SPEAKER IS TYPE ST_TYPE IS (ST0,ST1); SIGNAL C_ST:ST_TYPE; SIGNAL A:STD_LOGIC; BEGIN PROCESS(CLK1) VARIABLE P:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLK1EVENT AND CLK1=1 THEN CASE C_ST IS WHEN ST0=>IF SR1=1
39、THEN P:="00111111"; C_ST<=ST1;A<=1; ELSE C_ST<=ST0;A<=0; END IF; WHEN ST1=>IF P/=0 THEN P:=P-1;C_ST<=ST1; ELSE A<=0; IF SR1=1 THEN C_ST<=ST1; ELSE C_ST<=ST0; END IF; END IF; WH
40、EN OTHERS=>C_ST<=ST0;A<=0; END CASE; END IF; END PROCESS; S<=CLK2 AND A; END ARCHITECTURE; 本模塊的仿真波形如圖(17)所示。 圖(17)蜂鳴器模塊仿真波形 四.設(shè)計(jì)體會(huì) 通過這次課程設(shè)計(jì)我學(xué)會(huì)了使用MAX+pulsⅡ軟件,還學(xué)了verilog HDL編程的方法。因?yàn)関erilog HDL語言語法和以前學(xué)過的C語言比較相近,所以在看了些相關(guān)書籍和程序范例后,就入手編寫verilog HDL代碼,開始時(shí)候沒有遇到
41、太大問題。但是畢竟verilog HDL和C許多還是有差別的,如case的用法等。但是經(jīng)過我們一起的努力,順利的完成了verilog HDL代碼的編寫工作。 這次設(shè)計(jì)的是一個(gè)基于CPLD的智力競(jìng)賽搶答器。我們也許在日常生活中很少有機(jī)會(huì)接觸到搶答器,但在電視節(jié)目中卻隨處可見,并且現(xiàn)在的搶答器做的也越來越智能化,美觀化。以前認(rèn)為搶答器這種智能化的東西離我們很遠(yuǎn),但通過此次課程設(shè)計(jì),自己親手做出來了,才發(fā)現(xiàn)它其實(shí)并沒有那么困難。 所謂理論指導(dǎo)實(shí)踐,剛開始接到課題時(shí),我首先確定了要用到哪些知識(shí),主要是VHDL程序的設(shè)計(jì),軟件的仿真及硬件的實(shí)現(xiàn)。首先我查閱課本質(zhì)料,找了不少關(guān)于這方面的程序,盡量的把
42、它們都弄懂了。然后我確定了總體方案,把整體方案劃分成了幾個(gè)模塊,形成了一個(gè)整體的框架,然后各個(gè)擊破。軟件仿真好了以后還只是停留在理論之上,有不有效還要硬件的調(diào)試。所以仿真好了以后我就將所有的模塊整合起來進(jìn)行硬件的調(diào)試。此次課程設(shè)計(jì)不僅加強(qiáng)了我對(duì)專業(yè)知識(shí)的學(xué)習(xí)與了解,更有許多的感慨,加強(qiáng)了我們動(dòng)手、思考和解決問題的能力。我們很少能有這種機(jī)會(huì)來鍛煉自己,通過這次課程設(shè)計(jì),起到了很好的鍛煉效果。 五.參考文獻(xiàn) [1] 張?jiān)? 可編程邏輯器件設(shè)計(jì)及應(yīng)用[M]. 北京:機(jī)械工業(yè)出版社,2006.5:134-145 [2] 史小波,程夢(mèng)璋,許會(huì)芳. 集成電路設(shè)計(jì)VHDL教程[M]. 北京:清華大學(xué)出
43、版社,2005.6:177-186 [3] 付永慶. VHDL語言及其應(yīng)用[M]. 北京:高等教育出版社,2005.5:56-70 [4] 余松熠,周源華,吳時(shí)光. 數(shù)字圖像處理[M]. 北京:電子工業(yè)出版社,2006.6:89-96 [5] 張殿明. 可編程控制器與工廠自動(dòng)化[J]. 中國學(xué)術(shù)期刊,2005,4:58-60 [6] 劉秋云,王佳. Verilog HDL設(shè)計(jì)實(shí)踐與指導(dǎo)[M]. 北京:機(jī)械工業(yè)出版社,2005.1:123-145 [7] 劉洪喜,陸穎. VHDL電路設(shè)計(jì)實(shí)用教程[M]. 北京:清華大學(xué)出版社,2007.3:67-78 沈 陽 大 學(xué)
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案