版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 數(shù)字電路課程設(shè)計</b></p><p><b> 設(shè)計任務(wù)</b></p><p> 在許多比賽活動中,為了準確、公正、直觀地判斷出第一搶答者,通常設(shè)置一臺搶答器。通過搶答器的數(shù)顯、燈光和音響等手段指示出第一搶答者。同時,還可以設(shè)置定時、記分、犯規(guī)及獎懲記錄等多種功能。</p><p>
2、<b> 基本要求:</b></p><p> 設(shè)計制作一個可容納8個組別參賽的搶答器,每組控制一個搶答開關(guān),分別為S0、S1、S2、S3、S4、S5、S6、S7。</p><p> 設(shè)置主持人控制鍵:reset是用于控制整個系統(tǒng)清零的按鈕;restart是開始新一輪搶答;begin是用于發(fā)布搶答開始命令的按鈕。同時設(shè)置搶答定時電路,且計時起點與搶答命令J1同步
3、,計時終點是第一個搶答者的搶答信號到來,超時面無人搶答則題目作廢。</p><p> 系統(tǒng)具有第一搶答信號鑒別和鎖在功能。在主持人發(fā)布搶答命令之后,第一搶答者按下?lián)尨鸢粹o后,電路應(yīng)記憶下第一搶答者的組別,并封鎖其他各組的按鈕,即其他任何一組按鍵都不會使電路響應(yīng)。</p><p> 系統(tǒng)以三種方式指示第一搶答者:其一是點亮發(fā)光二級管LED,表示各組的發(fā)光二級管分別為L0、L1、L2……L
4、7;其二是LCD顯示TEAM:隊伍編號;其三是在第一搶答者產(chǎn)生時,揚聲器以“嘀—嘟”雙頻音響持續(xù)響1s。</p><p><b> 擴展功能:</b></p><p> 系統(tǒng)具有提前搶答的犯規(guī)記錄功能,即在主持人搶答命令J1有效前按下?lián)尨疰I,這時揚聲器發(fā)出特殊的高頻音響。同時,組別顯示數(shù)碼管和LED指示燈都指示出該犯規(guī)組別。</p><p>
5、; 設(shè)計計分電路。計分電路可預(yù)置50分,然后以每次加1分和減1分進行加/減計分。</p><p> 限時搶答。設(shè)置從發(fā)布搶答命令開始到最終時間的計時,最終時間過后,如有組別斷續(xù)搶答視為犯規(guī)。</p><p><b> 設(shè)計要求</b></p><p> 分析設(shè)計任務(wù),擬訂多種設(shè)計方案,根據(jù)當時的制作條件,選定其中的一種方案繪制設(shè)計系統(tǒng)
6、框圖和設(shè)計流程。</p><p> 設(shè)計各部分單元電路圖(或VHDL描述)。計算參數(shù),選定元器件型片ASIC。</p><p> 安裝、調(diào)試硬件電路,或制作以FPGA/CPLD為基礎(chǔ)的專用集成電路芯片ASIC。</p><p> 電路測試、分析所要求的各項功能和指標,或?qū)HDL描述的電路作功能仿真和時序仿真,對ASIC芯片作脫機運行。</p>
7、<p> 運行制作的硬件電路,操作各項設(shè)計功能是否正常、穩(wěn)定,交驗并演示所設(shè)計制作的電路裝置。</p><p> 總結(jié)設(shè)計中各主要環(huán)節(jié)的資料,整理、打印出規(guī)范的設(shè)計報告。</p><p><b> 三 實驗原理框圖</b></p><p> 當主持人設(shè)置答題時間后,啟動開始搶答按鍵時,搶答鑒別模塊進入工作狀態(tài),選手可以進行搶答
8、,同時搶答定時器開始從10秒遞減;當時間未減少到0秒時,有選手搶答,報警電路發(fā)出警報,則搶答鑒別模塊鎖存該選手的號碼,其他選手搶答無效,同時,譯碼顯示選手編號,定時器不再遞減;當定時器時間減少到0秒時,表示搶答時間到,發(fā)出警報,選手搶答無效。搶答選手的號碼和搶答時間的倒計時分別顯示在LCD顯示屏上。</p><p> 四 鍵盤按鍵對應(yīng)功能:</p><p> 五 方案設(shè)計(系統(tǒng)的模塊結(jié)
9、構(gòu))</p><p><b> 搶答流程</b></p><p> 整個搶答過程分為幾個不同的狀態(tài),故用狀態(tài)機來實現(xiàn)。</p><p><b> 程序</b></p><p> library ieee;</p><p> use ieee.std_logic_11
10、64.all;</p><p> entity qiangda is</p><p> port ( reset, en, baojing, clk : in std_logic;</p><p> start1, start2, jishi : out std_logic</p><p><b> );</b>
11、</p><p> end qiangda;</p><p> architecture ztj of qiangda is</p><p> type states is ( st0, st1, st2 );</p><p> signal st : states;</p><p><b> be
12、gin</b></p><p> process( clk, reset, en, baojing )</p><p><b> begin</b></p><p> if reset = '1' then st <= st0; jishi <= '0'; start1 <=
13、'0'; start1 <= '0';</p><p> elsif clk'event and clk = '1' then</p><p> case st is</p><p> when st0 => if en = '1' then st <= st1; sta
14、rt1 <= '1'; start2 <= '0'; jishi <= '1'; </p><p> else st <= st0;</p><p><b> end if;</b></p><p> when st1 => if baojing = '
15、;1' then st <= st2; start1 <= '0'; start2 <= '1';</p><p> elsif baojing <= '0' then st <= st1;</p><p><b> end if;</b></p><p>
16、; when st2 => st <= st2;</p><p> when others => st <= st0;</p><p><b> end case;</b></p><p><b> end if;</b></p><p> end process;
17、</p><p><b> end;</b></p><p><b> 器件圖:</b></p><p><b> 波形圖</b></p><p><b> 搶答控制及鎖存</b></p><p><b> VH
18、DL程序:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity qa_sc is</p><p> port ( reset, start : in std_logic;</p><p>
19、 s1, s2, s3, s4, s5, s6, s7, s8 : in std_logic;</p><p> zubie : out std_logic_vector ( 3 downto 0);</p><p> led : out std_logic_vector ( 7 downto 0);</p><p> ring : out std_logic
20、</p><p><b> );</b></p><p> end qa_sc;</p><p> architecture bhv of qa_sc is</p><p> signal enabled: std_logic;</p><p> signal sc: std_logic
21、_vector(7 downto 0);</p><p><b> begin</b></p><p> process (s1, s2, s3, s4, s5, s6, s7, s8, reset)</p><p><b> begin</b></p><p> ring <=
22、39;0';</p><p> if (s1 or s2 or s3 or s4 or s5 or s6 or s7 or s8) = '1' and enabled = '1' then</p><p> ring <= '1';</p><p><b> end if;</b&g
23、t;</p><p> if reset = '1' then</p><p> sc(0) <= '0';</p><p> sc(1) <= '0';</p><p> sc(2) <= '0';</p><p> sc(3
24、) <= '0';</p><p> sc(4) <= '0';</p><p> sc(5) <= '0';</p><p> sc(6) <= '0';</p><p> sc(7) <= '0';</p>
25、<p> enabled <= '1';</p><p> elsif start = '1' then</p><p> if enabled = '1' and (s1 = '1' or s2 = '1' or s3 = '1' or s4 = '1'
26、or s5 = '1' or s6 = '1' or s7 = '1' or s8 = '1') then</p><p> sc(0) <= s1;</p><p> sc(1) <= s2;</p><p> sc(2) <= s3;</p><p>
27、 sc(3) <= s4;</p><p> sc(4) <= s5;</p><p> sc(5) <= s6;</p><p> sc(6) <= s7;</p><p> sc(7) <= s8;</p><p> enabled <= '0';&l
28、t;/p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> process (sc)</p><p><b> begin</b></p&
29、gt;<p> led <= sc;</p><p> case sc is</p><p> when "00000001" => zubie <= "0001";</p><p> when "00000010" => zubie <= "0
30、010";</p><p> when "00000100" => zubie <= "0011";</p><p> when "00001000" => zubie <= "0100";</p><p> when "00010000
31、" => zubie <= "0101";</p><p> when "00100000" => zubie <= "0110";</p><p> when "01000000" => zubie <= "0111";</p>
32、<p> when "10000000" => zubie <= "1000";</p><p> when others => zubie <= "0000";</p><p><b> end case;</b></p><p> en
33、d process;</p><p><b> end;</b></p><p><b> 器件圖:</b></p><p><b> 波形圖:</b></p><p><b> 2、10秒計時</b></p><p>&l
34、t;b> 用狀態(tài)機來實現(xiàn)</b></p><p><b> VHDL程序:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;<
35、;/p><p> entity jishiqi is</p><p> port ( clk, jishi, reset, stop : in std_logic;</p><p> baojing : out std_logic;</p><p> TM : out std_logic_vector ( 7 downto 0)</
36、p><p><b> );</b></p><p> end jishiqi;</p><p> architecture ztj_js of jishiqi is</p><p> type states is ( st0, st1, st2 );</p><p> signal st :
37、 states;</p><p> signal tl, th : std_logic_vector ( 3 downto 0 );</p><p><b> begin</b></p><p> process ( clk, jishi, reset, stop )</p><p><b> begi
38、n</b></p><p> if reset = '1' then st <= st0; th <= "0001"; tl <= "0000"; baojing <= '0'; --倒計時 10s</p><p> elsif clk'event and clk
39、 = '1' then</p><p> case st is</p><p> when st0 => if jishi = '1' then st <= st1; baojing <= '0';</p><p> else st <= st0;</p><p>
40、<b> end if;</b></p><p> when st1 => if stop = '1' then st <= st2;</p><p> elsif tl = "0000" then</p><p> if th = "0000" then</p&
41、gt;<p> th <= "0000"; tl <= "0000"; baojing <= '1';</p><p><b> else</b></p><p> tl <= "1001"; th <= th - 1;</p>
42、<p><b> end if;</b></p><p><b> else</b></p><p> tl <= tl - 1;</p><p><b> end if;</b></p><p> when st2 => baojing <
43、;= '0'; st <= st2;</p><p> when others => st <= st0;</p><p><b> end case;</b></p><p><b> end if;</b></p><p> end process;&l
44、t;/p><p> process ( tl, th )</p><p><b> begin</b></p><p> TM <= th & tl;</p><p> end process;</p><p><b> end;</b></p>
45、;<p><b> 器件圖:</b></p><p><b> 波形圖</b></p><p><b> 計分器</b></p><p><b> VHDL程序:</b></p><p> library ieee;</p&g
46、t;<p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity jifenqi is</p><p> port ( clk, clear : in std_logic;</p><p> ADD
47、, SUB : in std_logic;</p><p> team : in std_logic_vector ( 3 downto 0 );</p><p> F1, F2, F3, F4, F5, F6, F7, F8 : out std_logic_vector ( 7 downto 0 )</p><p><b> );</b>
48、;</p><p> end jifenqi;</p><p> architecture jfq_ztj of jifenqi is</p><p> type states is ( st0, st1, st2 );</p><p> signal st : states;</p><p> signal
49、 k1, k2, k3, k4, k5, k6, k7, k8 : std_logic_vector ( 7 downto 0 );</p><p><b> begin</b></p><p> process ( clk, ADD, SUB, clear, team )</p><p><b> begin</b>
50、;</p><p> if clear = '1' then</p><p> st <= st0;</p><p> k1 <= "01010000"; --初始賦值50分</p><p> k2 <= "01010000";</p>&
51、lt;p> k3 <= "01010000";</p><p> k4 <= "01010000";</p><p> k5 <= "01010000";</p><p> k6 <= "01010000";</p><p>
52、 k7 <= "01010000";</p><p> k8 <= "01010000";</p><p> elsif clk'event and clk = '1' then</p><p> case st is</p><p> when st0 =
53、> if ADD = '1' and SUB = '0' then st <= st1;</p><p> elsif ADD = '0' and SUB = '1' then st <= st2;</p><p> else st <= st0;</p><p><b
54、> end if;</b></p><p> when st1 => if team = "0001" then</p><p> if k1(3 downto 0) = "1001" then k1(3 downto 0) <= "0000";</p><p> if
55、 k1(7 downto 4) = "1001" then k1(7 downto 4) <= "0000";</p><p> else k1(7 downto 4) <= k1(7 downto 4) + 1;</p><p><b> end if;</b></p><p> el
56、se k1(3 downto 0) <= k1(3 downto 0) + 1;</p><p><b> end if;</b></p><p> elsif team = "0010" then</p><p> if k2(3 downto 0) = "1001" then k2(3 d
57、ownto 0) <= "0000";</p><p> if k2(7 downto 4) = "1001" then k2(7 downto 4) <= "0000";</p><p> else k2(7 downto 4) <= k2(7 downto 4) + 1;</p><p
58、><b> end if;</b></p><p> else k2(3 downto 0) <= k2(3 downto 0) + 1;</p><p><b> end if;</b></p><p> elsif team = "0011" then</p>&l
59、t;p> if k3(3 downto 0) = "1001" then k3(3 downto 0) <= "0000";</p><p> if k3(7 downto 4) = "1001" then k3(7 downto 4) <= "0000";</p><p> else
60、k3(7 downto 4) <= k3(7 downto 4) + 1;</p><p><b> end if;</b></p><p> else k3(3 downto 0) <= k3(3 downto 0) + 1;</p><p><b> end if;</b></p>&l
61、t;p> elsif team = "0100" then</p><p> if k4(3 downto 0) = "1001" then k4(3 downto 0) <= "0000";</p><p> if k4(7 downto 4) = "1001" then k4(7 down
62、to 4) <= "0000";</p><p> else k4(7 downto 4) <= k4(7 downto 4) + 1;</p><p><b> end if;</b></p><p> else k4(3 downto 0) <= k4(3 downto 0) + 1;</p
63、><p><b> end if;</b></p><p> elsif team = "0101" then</p><p> if k5(3 downto 0) = "1001" then k5(3 downto 0) <= "0000";</p><p
64、> if k5(7 downto 4) = "1001" then k5(7 downto 4) <= "0000";</p><p> else k5(7 downto 4) <= k5(7 downto 4) + 1;</p><p><b> end if;</b></p><p
65、> else k5(3 downto 0) <= k5(3 downto 0) + 1;</p><p><b> end if;</b></p><p> elsif team = "0110" then</p><p> if k6(3 downto 0) = "1001" the
66、n k6(3 downto 0) <= "0000";</p><p> if k6(7 downto 4) = "1001" then k6(7 downto 4) <= "0000";</p><p> else k6(7 downto 4) <= k6(7 downto 4) + 1;</p>
67、;<p><b> end if;</b></p><p> else k6(3 downto 0) <= k6(3 downto 0) + 1;</p><p><b> end if;</b></p><p> elsif team = "0111" then</p
68、><p> if k7(3 downto 0) = "1001" then k7(3 downto 0) <= "0000";</p><p> if k7(7 downto 4) = "1001" then k7(7 downto 4) <= "0000";</p><p>
69、; else k7(7 downto 4) <= k7(7 downto 4) + 1;</p><p><b> end if;</b></p><p> else k7(3 downto 0) <= k7(3 downto 0) + 1;</p><p><b> end if;</b></p
70、><p> elsif team = "1000" then</p><p> if k8(3 downto 0) = "1001" then k8(3 downto 0) <= "0000";</p><p> if k8(7 downto 4) = "1001" then k
71、8(7 downto 4) <= "0000";</p><p> else k8(7 downto 4) <= k8(7 downto 4) + 1;</p><p><b> end if;</b></p><p> else k8(3 downto 0) <= k8(3 downto 0) +
72、1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> --</b></p><p> -- if SUB = '1' then st
73、<= st2;</p><p> -- else st <= st1;</p><p> -- end if;</p><p> st <= st0;</p><p> when st2 => if team = "0
74、001" then</p><p> if k1(3 downto 0) = "0000" then k1(3 downto 0) <= "1001";</p><p> if k1(7 downto 4) = "0000" then k1(7 downto 4) <= "1001";
75、</p><p> else k1(7 downto 4) <= k1(7 downto 4) - 1;</p><p><b> end if;</b></p><p> else k1(3 downto 0) <= k1(3 downto 0) - 1;</p><p><b> end
76、 if;</b></p><p> elsif team = "0010" then</p><p> if k2(3 downto 0) = "0000" then k2(3 downto 0) <= "1001";</p><p> if k2(7 downto 4) = &qu
77、ot;0000" then k2(7 downto 4) <= "1001";</p><p> else k2(7 downto 4) <= k2(7 downto 4) - 1;</p><p><b> end if;</b></p><p> else k2(3 downto 0) <
78、;= k2(3 downto 0) - 1;</p><p><b> end if;</b></p><p> elsif team = "0011" then</p><p> if k3(3 downto 0) = "0000" then k3(3 downto 0) <= "
79、1001";</p><p> if k3(7 downto 4) = "0000" then k3(7 downto 4) <= "1001";</p><p> else k3(7 downto 4) <= k3(7 downto 4) - 1;</p><p><b> end if
80、;</b></p><p> else k3(3 downto 0) <= k3(3 downto 0) - 1;</p><p><b> end if;</b></p><p> elsif team = "0100" then</p><p> if k4(3 down
81、to 0) = "0000" then k4(3 downto 0) <= "1001";</p><p> if k4(7 downto 4) = "0000" then k4(7 downto 4) <= "1001";</p><p> else k4(7 downto 4) <=
82、k4(7 downto 4) - 1;</p><p><b> end if;</b></p><p> else k4(3 downto 0) <= k4(3 downto 0) - 1;</p><p><b> end if;</b></p><p> elsif team =
83、 "0101" then</p><p> if k5(3 downto 0) = "0000" then k5(3 downto 0) <= "1001";</p><p> if k5(7 downto 4) = "0000" then k5(7 downto 4) <= "100
84、1";</p><p> else k5(7 downto 4) <= k5(7 downto 4) - 1;</p><p><b> end if;</b></p><p> else k5(3 downto 0) <= k5(3 downto 0) - 1;</p><p><b&
85、gt; end if;</b></p><p> elsif team = "0110" then</p><p> if k6(3 downto 0) = "0000" then k6(3 downto 0) <= "1001";</p><p> if k6(7 downto
86、4) = "0000" then k6(7 downto 4) <= "1001";</p><p> else k6(7 downto 4) <= k6(7 downto 4) - 1;</p><p><b> end if;</b></p><p> else k6(3 downt
87、o 0) <= k6(3 downto 0) - 1;</p><p><b> end if;</b></p><p> elsif team = "0111" then</p><p> if k7(3 downto 0) = "0000" then k7(3 downto 0) <
88、= "1001";</p><p> if k7(7 downto 4) = "0000" then k7(7 downto 4) <= "1001";</p><p> else k7(7 downto 4) <= k7(7 downto 4) - 1;</p><p><b>
89、 end if;</b></p><p> else k7(3 downto 0) <= k7(3 downto 0) - 1;</p><p><b> end if;</b></p><p> elsif team = "1000" then</p><p> if k
90、8(3 downto 0) = "0000" then k8(3 downto 0) <= "1001";</p><p> if k8(7 downto 4) = "0000" then k8(7 downto 4) <= "1001";</p><p> else k8(7 downto 4
91、) <= k8(7 downto 4) - 1;</p><p><b> end if;</b></p><p> else k8(3 downto 0) <= k8(3 downto 0) - 1;</p><p><b> end if;</b></p><p><b&
92、gt; end if;</b></p><p> st <= st0;</p><p> --if ADD = '1' then st <= st1;</p><p> else st <= st2;</p><p><b> end if;</b></p&g
93、t;<p> when others => st <= st0;</p><p><b> end case;</b></p><p><b> end if;</b></p><p> end process;</p><p> process ( k1, k2
94、, k3, k4, k5, k6, k7, k8 )</p><p><b> begin</b></p><p><b> F1 <= k1;</b></p><p><b> F2 <= k2;</b></p><p><b> F3 <
95、= k3;</b></p><p><b> F4 <= k4;</b></p><p><b> F5 <= k5;</b></p><p><b> F6 <= k6;</b></p><p><b> F7 <= k7
96、;</b></p><p><b> F8 <= k8;</b></p><p> end process;</p><p><b> end;</b></p><p><b> 器件圖:</b></p><p><b&g
97、t; 波形圖</b></p><p><b> 4、報警電路</b></p><p><b> VHDL程序:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p&g
98、t; use ieee.std_logic_unsigned.all;</p><p> entity shengyin is</p><p> port ( ring, sy : in std_logic;</p><p> fengmingqi : out std_logic</p><p><b> );</b
99、></p><p> end shengyin;</p><p> architecture bhv of shengyin is</p><p><b> begin</b></p><p> process ( ring, sy )</p><p><b> begi
100、n</b></p><p> if ring = '1' then</p><p> fengmingqi <= sy;</p><p><b> else</b></p><p> fengmingqi <= '0';</p><p&g
101、t;<b> end if;</b></p><p> end process;</p><p><b> end;</b></p><p><b> 器件圖:</b></p><p><b> 波形圖</b></p><p&
102、gt;<b> 5、鍵盤掃描</b></p><p><b> VHDL程序</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;
103、</p><p> entity PADTOKEY is</p><p> port (CPIN,R :IN STD_LOGIC;</p><p> Y: OUT STD_LOGIC_VECTOR(15 DOWNTO 0);</p><p> ICOL : IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p&
104、gt;<p> OROW : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)</p><p><b> );</b></p><p> END ENTITY;</p><p> architecture JGT of PADTOKEY is</p><p> TYPE STATE
105、S IS (S0,S1,S2,S3,S4);</p><p> SIGNAL S: STATES;</p><p> SIGNAL SROW : STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> SIGNAL CPCT : INTEGER RANGE 0 TO 255;</p><p> SIGNAL C
106、TDELAY: INTEGER RANGE 0 TO 511;</p><p> SIGNAL CP:STD_LOGIC;</p><p><b> BEGIN</b></p><p> PROCESS(CPIN)</p><p><b> BEGIN</b></p><
107、p> IF CPIN='1' AND CPIN 'EVENT THEN</p><p> IF CPCT=255 THEN</p><p> CPCT<=0;CP<= NOT CP;</p><p><b> ELSE</b></p><p> CPCT<=CPC
108、T+1;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCESS(CP,R)</p><p> VARIABLE N:INTEGER RANGE
109、 0 TO 12;</p><p><b> BEGIN</b></p><p> IF R='1' THEN</p><p> S<=S0;Y<="0000000000000000";SROW<="1110";N:=0;</p><p>
110、 ELSIF CP='1' AND CP'EVENT THEN</p><p><b> CASE S IS</b></p><p> WHEN S0=>S<=S1;</p><p> WHEN S1=>OROW<=SROW;S<=S2;</p><p> W
111、HEN S2=>S<=S3;</p><p><b> CASE N IS</b></p><p> WHEN 0 =>Y(3 DOWNTO 0)<=NOT ICOL;</p><p> WHEN 4 =>Y(7 DOWNTO 4)<=NOT ICOL;</p><p> WH
112、EN 8 =>Y(11 DOWNTO 8)<=NOT ICOL;</p><p> WHEN 12 =>Y(15 DOWNTO 12)<=NOT ICOL;</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p>
113、 WHEN S3=>IF N=12 THEN</p><p> N:=0;S<=S4;CTDELAY<=0;SROW<="1110";</p><p><b> ELSE</b></p><p> N:=N+4;S<=S1;SROW<=SROW(2 DOWNTO 0)&SRO
114、W(3);</p><p><b> END IF;</b></p><p> WHEN S4=>IF CTDELAY=511 THEN</p><p> S<=S1;CTDELAY<=0;</p><p><b> ELSE</b></p><p>
115、; CTDELAY<=CTDELAY+1;</p><p><b> END IF;</b></p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p>
116、<p><b> END JGT;</b></p><p><b> 器件圖</b></p><p><b> 6、LCD顯示</b></p><p><b> VHDL程序</b></p><p> LIBRARY IEEE;<
117、;/p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> entity QDQLCD is</p><p><b> port (</b></p><p> CPIN,CL
118、EAR,BUSY :IN STD_LOGIC;</p><p> F0,F1,F2,F3,F4,F5,F6,F7:IN STD_LOGIC_VECTOR(7 DOWNTO 0); --得分</p><p> TM : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --時間輸出</p><p> ZB : IN STD_LOGIC_
119、VECTOR(3 DOWNTO 0); --組別</p><p> CLK,RST,STROBE,OUTLINE : OUT STD_LOGIC;</p><p> DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> ADDR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)</p
120、><p><b> );</b></p><p> end entity ;</p><p> architecture art of QDQLCD is</p><p> TYPE STATES IS (S0,S1,S2,S3,S4);</p><p> SIGNAL S: STATES;
121、</p><p> SIGNAL LCDPT : INTEGER RANGE 0 TO 25;</p><p> SIGNAL CPCT : INTEGER RANGE 0 TO 65535;</p><p> SIGNAL CP: STD_LOGIC;</p><p> --SIGNAL ASCEW,ASCSN : STD_LOGI
122、C_VECTOR(7 DOWNTO 0);</p><p><b> begin</b></p><p> PROCESS(CPIN,CLEAR)</p><p><b> BEGIN</b></p><p> CLK<=CPIN;</p><p> IF C
123、LEAR='1' THEN</p><p> CPCT<=65535;</p><p> ELSIF CPIN='1' AND CPIN 'EVENT THEN</p><p> IF CPCT=0 THEN</p><p> CPCT<=65535;CP<=NOT CP;&l
124、t;/p><p><b> ELSE</b></p><p> CPCT<=CPCT-1;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS; --
125、分頻為500US周期</p><p> --主進程:擬采用500us時鐘,即在500us后完成狀態(tài)轉(zhuǎn)換,修改LCDPT指針</p><p> --S0:初始狀態(tài),在R=1時,處于S0狀態(tài),LCDPT=0</p><p> -- 流程: 輸出rst=1, 轉(zhuǎn)S1</p><p> --S1:輸出RST=0;判斷BUSY=0? :Y:
126、LCDPT+1;LCDPT到固定最后?::N: ->S2</p><p> -- ::Y: 轉(zhuǎn)S3</p><p> -- ;N; NULL</p><p> --S2:給出STROBE信號。轉(zhuǎn)S1</p>
127、<p> --S1,S2完成初始化固定顯示的功能</p><p> PROCESS(CP,CLEAR)</p><p><b> BEGIN</b></p><p> IF CLEAR='1' THEN</p><p> S<=S0;LCDPT<=0;RST<=
128、39;1';</p><p> ELSIF CP='1' AND CP 'EVENT THEN</p><p><b> CASE S IS</b></p><p> WHEN S0=> S<=S1;LCDPT<=0;RST<='1';</p><
129、p> WHEN S1=> RST<='0';STROBE<='0';</p><p> IF BUSY='0' THEN</p><p> LCDPT<=LCDPT+1;</p><p> IF LCDPT=11 THEN</p><p><b>
130、 S<=S3;</b></p><p><b> ELSE</b></p><p><b> S<=S2;</b></p><p><b> END IF;</b></p><p><b> END IF;</b><
131、/p><p> WHEN S2=> S<=S1;STROBE<='1';</p><p> --S3~S4完成掃描顯示功能</p><p> --S3:BUSY=0? :Y: LCDPT循環(huán)+1 ,轉(zhuǎn)S4</p><p> --S4:給出STROBE信號,轉(zhuǎn)S3</p><p>
132、 WHEN S3=> STROBE<='0';</p><p> IF BUSY='0' THEN</p><p> IF LCDPT=29 THEN</p><p> LCDPT<=11;</p><p><b> ELSE</b></p><
133、;p> LCDPT<=LCDPT+1;</p><p><b> END IF;</b></p><p><b> S<=S4;</b></p><p><b> END IF;</b></p><p> WHEN S4=> STROBE<
134、;='1';S<=S3;</p><p> WHEN OTHERS=> NULL;</p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p
135、> --選擇輸出進程(LCDPT)</p><p> --LCDPT=0,NULL</p><p> -- =1~10 顯示 Team: Time:</p><p> PROCESS(LCDPT)</p><p><b> BEGIN</b></p><p> CASE
136、LCDPT IS</p><p> WHEN 0 => NULL;</p><p> WHEN 1=> DATA<="01010100";ADDR<="0000";OUTLINE<='0'; --T 54H</p><p> WHEN 2=> DATA<
137、="01100101";ADDR<="0001";OUTLINE<='0'; --e 65H</p><p> WHEN 3=> DATA<="01100001";ADDR<="0010";OUTLINE<='0'; --a 61H</p&
138、gt;<p> WHEN 4=> DATA<="01101101";ADDR<="0011";OUTLINE<='0'; --m 6DH</p><p> WHEN 5=> DATA<="00111010";ADDR<="0100";OUTLINE&
139、lt;='0'; --: 3AH</p><p> WHEN 6=> DATA<="01010100";ADDR<="0111";OUTLINE<='0'; --T 54H</p><p> WHEN 7=> DATA<="01101001"
140、;;ADDR<="1000";OUTLINE<='0'; --i 69H</p><p> WHEN 8=> DATA<="01101101";ADDR<="1001";OUTLINE<='0'; --m 6DH</p><p> WHEN
141、 9=> DATA<="01100101";ADDR<="1010";OUTLINE<='0'; --e 65H</p><p> WHEN 10=> DATA<="00111010";ADDR<="1011";OUTLINE<='0';
142、 --: 3AH</p><p> --LCDPT=11~26 顯示FS1~FS8</p><p> WHEN 11=>DATA<="0011"&F0(7 DOWNTO 4);ADDR<="0000";OUTLINE<='1';</p><p> WHEN 12=>
143、DATA<="0011"&F0(3 DOWNTO 0);ADDR<="0001";OUTLINE<='1';</p><p> WHEN 13=>DATA<="0011"&F1(7 DOWNTO 4);ADDR<="0010";OUTLINE<='1&
144、#39;;</p><p> WHEN 14=>DATA<="0011"&F1(3 DOWNTO 0);ADDR<="0011";OUTLINE<='1';</p><p> WHEN 15=>DATA<="0011"&F2(7 DOWNTO 4);ADDR&
145、lt;="0100";OUTLINE<='1';</p><p> WHEN 16=>DATA<="0011"&F2(3 DOWNTO 0);ADDR<="0101";OUTLINE<='1';</p><p> WHEN 17=>DATA<=&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda數(shù)字搶答器課程設(shè)計
- eda課程設(shè)計報告--eda數(shù)字搶答器
- eda課程設(shè)計-搶答器
- eda課程設(shè)計---搶答器
- eda課程設(shè)計---競賽搶答器
- eda課程設(shè)計---數(shù)字式競賽搶答器
- eda課程設(shè)計--數(shù)字式競賽搶答器設(shè)計
- eda課程設(shè)計---競賽搶答器
- eda畢業(yè)課程設(shè)計--搶答器
- eda課程設(shè)計—四路搶答器
- 四路搶答器eda課程設(shè)計
- 課程設(shè)計--數(shù)字搶答器
- 數(shù)字搶答器課程設(shè)計
- 四路搶答器eda課程設(shè)計
- 數(shù)字搶答器課程設(shè)計
- 數(shù)字搶答器課程設(shè)計
- 課程設(shè)計--數(shù)字搶答器
- 八路搶答器eda課程設(shè)計
- 八路搶答器-eda課程設(shè)計
- 六人搶答器eda課程設(shè)計
評論
0/150
提交評論