2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  課程設(shè)計 實驗報告</p><p>  模 塊 名 稱 EDA </p><p>  專 業(yè) 通信工程 </p><p>  學 生 班 級 </p><p>  學 生 學 號

2、 </p><p>  一、 矩陣鍵盤按鍵的數(shù)碼管顯示 </p><p><b> ?。ㄒ唬嶒災康?lt;/b></p><p>  (1)掌握VHDL語言的語法規(guī)范,掌握時序電路描述方法</p><p>  (2)掌握多個數(shù)碼管動態(tài)掃描顯示的原理及設(shè)計方法</p><p>

3、<b> ?。ǘ嶒瀮x器</b></p><p>  PC機,ALtera CPLD硬件實驗開發(fā)系統(tǒng),設(shè)計軟件(Quartus II )</p><p><b> ?。ㄈ嶒炄蝿?lt;/b></p><p>  要求設(shè)計出4*4矩陣鍵盤對某一按鍵按下就在數(shù)碼管顯示一個數(shù)字。按鍵從左上角到右下角依次為1,2,…,16。<

4、;/p><p><b> ?。ㄋ模嶒炘?lt;/b></p><p><b>  按鍵模塊原理</b></p><p>  鍵盤掃描的實現(xiàn)過程如下:對于4×4鍵盤,通常連接為4行、4列,因此要識別按鍵,只需要知道是哪一行和哪一列即可,為了完成這一識別過程,我們的思想是,首先固定輸出4行為高電平,然后輸出4列為低電平,在

5、讀入輸出的4行的值,通常高電平會被低電平拉低,如果讀入的4行均為高電平,那么肯定沒有按鍵按下,否則,如果讀入的4行有一位為低電平,那么對應的該行肯定有一個按鍵按下,這樣便可以獲取到按鍵的行值。同理,獲取列值也是如此,先輸出4列為高電平,然后在輸出4行為低電平,再讀入列值,如果其中有哪一位為低電平,那么肯定對應的那一列有按鍵按下。</p><p>  鍵盤鍵值的獲取:鍵盤上的每一個按鍵其實就是一個開關(guān)電路,當某鍵被

6、按下時,該按鍵的接點會呈現(xiàn)0的狀態(tài),反之,未被按下時則呈現(xiàn)邏輯1的狀態(tài)。掃描信號由row進入鍵盤,變化的順序依次為1110-1101-1011-0111-1110。每一次掃描一排,依次地周而復始。例如現(xiàn)在的掃描信號為1011,代表目前正在掃描9,10,11,12這一排的按鍵,如果這排當中沒有按鍵被按下的話,則由column讀出的值為1111;反之當9這個按鍵被按下的話,則由column讀出的值為1110。</p><

7、p>  根據(jù)上面所述原理,我們可得到各按鍵的位置與數(shù)碼關(guān)系如表所示:</p><p><b>  動態(tài)顯示原理</b></p><p>  為使得輸入控制電路簡單且易于實現(xiàn),采用動態(tài)掃描的方式實現(xiàn)設(shè)計要求。動態(tài)掃描顯示需要由兩組信號來控制:一組是字段輸出口輸出的字形代碼,用來控制顯示的字形,稱為段碼;另一組是位輸出口輸出的控制信號,用來選擇第幾位數(shù)碼管工作,稱為

8、位碼。</p><p>  各位數(shù)碼管的相同段是并聯(lián)的,段碼的輸出對各位數(shù)碼管來說都是相同的。因此在同一時刻如果各位數(shù)碼管都處于點亮狀態(tài),6位數(shù)碼管將顯示相同的字符。若要各位數(shù)碼管能夠顯示出與本位相應的字符,就必須采用掃描顯示方式,即在某一時刻,只讓某一位處于點亮狀態(tài),而其它各位處于滅燈狀態(tài)。同時,段碼輸出相應位要顯示字符的字型碼。這樣在同一時刻,只有選通的那一位顯示出字符,而其它各位則是熄滅的,如此循環(huán)下去,就

9、可以使各位數(shù)碼管顯示出要顯示的字符。</p><p>  雖然這些字符是在不同時刻出現(xiàn)的,而且同一時刻,只有一位顯示,其它各位熄滅,但由于數(shù)碼管具有余輝特性和人眼有視覺暫留現(xiàn)象,只要每位數(shù)碼管顯示間隔足夠短,給人眼的視覺印象就會是連續(xù)穩(wěn)定地顯示。</p><p>  總之,多個數(shù)碼管動態(tài)掃描顯示,是將所有數(shù)碼管的相同段并聯(lián)在一起,通過選通信號分時控制各個數(shù)碼管的公共端,循環(huán)點亮多個數(shù)碼管,

10、并利用人眼的視覺暫留現(xiàn)象,只要掃描的頻率大于50Hz,將看不到閃爍現(xiàn)象。</p><p><b> ?。ㄎ澹┰O(shè)計思路</b></p><p>  該程序可分為兩個模塊:獲取并存儲鍵值模塊和動態(tài)顯示模塊</p><p>  獲取并存儲鍵值模塊:此次實驗只要求仿真而不需要接硬件,因而不存在按鍵這個動作,所以鍵盤掃描原理在這里并不適用。在程序設(shè)計中我

11、們將row和column都設(shè)置為輸入信號,則低電平出現(xiàn)的行和列所交處即為按鍵處,以此簡單模擬按鍵。根據(jù)上表所列,將對應按鍵的鍵值存儲在key_code中。這樣就完成了鍵值的存儲。</p><p>  動態(tài)顯示模塊:此次實驗只需用到兩個顯示數(shù)碼管,因此只要用一個高頻時鐘信號控制這兩個數(shù)碼管交替亮滅,并在對應位顯示正確的鍵值,就完成動態(tài)顯示了。</p><p>  綜上就可以實現(xiàn)矩陣案件的數(shù)碼

12、管顯示了。具體流程圖如下:</p><p><b> ?。┯布崿F(xiàn)</b></p><p>  以上步驟都完成后,在硬件上實現(xiàn)就比較簡單了。此時要注意兩個問題:第一,時鐘頻率的設(shè)置,在仿真時由于沒有外在時鐘源,所以把row和column都設(shè)置為手動輸入,但當在硬件上實現(xiàn)時要采用實驗板上的低頻時鐘源,并設(shè)計分頻電路提供合適的時鐘頻率。這就需要對程序做相應的修改;第二

13、,管腳號的編寫,根據(jù)各實物圖紙標號和ATF1508的對應關(guān)系編寫對應管腳號。</p><p>  接下來要做的就是硬件連接,然后就是下載程序。程序通過編譯后生成*.pof文件,用quartusII軟件先刪除再下載。如果下載成功的話,就能實現(xiàn)從左上到右下按鍵分別顯示數(shù)字1-16。</p><p> ?。ㄆ撸└戒洠╒HDL源程序)</p><p>  LIBRARY i

14、eee ;</p><p>  USE ieee.std_logic_1164.all ;</p><p>  USE ieee.std_logic_unsigned.all ;</p><p><b>  --顯示模塊</b></p><p>  ENTITY key IS</p><p>&l

15、t;b>  PORT ( </b></p><p>  clk: IN STD_LOGIC;--40M高頻時鐘,也可以接低頻時鐘,看數(shù)碼管顯示的情況</p><p>  led_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --數(shù)碼管8段顯示,可顯示--0~9,A~F</p><p>  led_sel : bu

16、ffer STD_LOGIC_VECTOR(7 DOWNTO 0);--選擇6個數(shù)碼管,‘1’點--亮對應數(shù)碼管</p><p>  row : out STD_LOGIC_VECTOR (3 downto 0);--行列式鍵盤的4行</p><p>  column : in STD_LOGIC_VECTOR (3 downto 0)--行列式鍵盤的4列</p>

17、<p><b>  ) ; </b></p><p><b>  END key ;</b></p><p>  ARCHITECTURE Behavior OF key IS</p><p>  SIGNAL clk_temp :STD_LOGIC; --分頻后的電路時鐘

18、輸出,掃描時鐘</p><p>  SIGNAL clk1_temp : STD_LOGIC; --分頻后的電路時鐘輸出,顯示時鐘</p><p>  SIGNAL data :STD_LOGIC_VECTOR(3 DOWNTO 0);--數(shù)碼管要顯示的數(shù)0~15表示1~16</p><p>  SIGNAL led_sel_count

19、:STD_LOGIC;--用于選擇第5個和第6個數(shù)碼管,分別用1和0代表</p><p>  SIGNAL div_cnt : std_logic_vector(1 downto 0);--行掃描驅(qū)動</p><p>  SIGNAL scan_key : std_logic_vector(3 DOWNTO 0); --掃描碼寄存器 </p><

20、p>  signal key_code:integer range 0 to 16;</p><p>  signal cnt:std_logic_vector(2 downto 0);</p><p>  signal state:integer;</p><p>  begin </p><p>  row <

21、;= scan_key;</p><p>  --data <= key_code;</p><p>  -------------------------------10分頻電路-----------------------------------------------------------------------</p><p>  PROCESS

22、(clk)</p><p>  VARIABLE counter: std_logic_vector(10 downto 0);--計數(shù)寄存器,10分頻</p><p><b>  BEGIN</b></p><p>  IF (clk'EVENT AND clk ='0') THEN --下降沿有效</p>

23、;<p>  counter := counter +1 ;</p><p>  IF (counter = "10000000000") THEN</p><p>  clk_temp <= NOT clk_temp; --分頻后的時鐘變化</p><p><b>  END IF;</b><

24、;/p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  ------------------------------7分頻電路-----------------------------------------------------------------------</p>

25、<p>  PROCESS(clk_temp)</p><p>  VARIABLE counter: std_logic_vector(7 downto 0);--計數(shù)寄存器,7分頻</p><p><b>  BEGIN</b></p><p>  IF (clk'EVENT AND clk ='0')

26、 THEN --下降沿有效</p><p>  counter := counter +1 ;</p><p>  IF (counter = "10000000") THEN</p><p>  clk1_temp <= NOT clk1_temp; --分頻后的時鐘變化</p><p><b>

27、  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  ----------------------- 行掃描驅(qū)動-----------------------------------------------------------------

28、------------</p><p>  PROCESS(clk_temp)</p><p><b>  BEGIN</b></p><p>  IF(clk'EVENT AND clk = '0')THEN</p><p>  div_cnt <= div_cnt + 1; &l

29、t;/p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  ----------------------------------------------------------------------------------------------------------</p>

30、;<p>  PROCESS(div_cnt)</p><p><b>  BEGIN</b></p><p>  CASE div_cnt IS</p><p>  WHEN "00"=> scan_key<="1110";</p><p>  WHEN

31、 "01"=> scan_key<="1101";</p><p>  WHEN "10"=> scan_key<="1011";</p><p>  WHEN "11"=> scan_key<="0111";</p>&

32、lt;p>  WHEN OTHERS=>NULL;</p><p><b>  END CASE;</b></p><p>  END PROCESS;</p><p>  -------------------------------按鍵-----------------------------------------------

33、</p><p>  PROCESS(clk)</p><p><b>  BEGIN</b></p><p>  IF(clk'EVENT AND clk='1')THEN</p><p>  CASE scan_key IS --檢測何處有鍵按下</p><p>  

34、WHEN "1110" =></p><p>  CASE column IS</p><p>  WHEN "1110" =></p><p>  key_code <=1; </p><p>  WHEN "1101" =></p>

35、<p>  key_code <= 2; </p><p>  WHEN "1011" =></p><p>  key_code <= 3; </p><p>  WHEN "0111" =></p><p>  key_code <=4;

36、 </p><p>  WHEN OTHERS =></p><p><b>  NULL;</b></p><p><b>  END CASE;</b></p><p>  WHEN "1101" =></p><p>  CASE co

37、lumn IS</p><p>  WHEN "1110" =></p><p>  key_code <=5; </p><p>  WHEN "1101" =></p><p>  key_code <=6; </p><p>  WH

38、EN "1011" =></p><p>  key_code <= 7; </p><p>  WHEN "0111" =></p><p>  key_code <= 8; </p><p>  WHEN OTHERS =></p><

39、;p><b>  NULL;</b></p><p><b>  END CASE;</b></p><p>  WHEN "1011" =></p><p>  CASE column IS</p><p>  WHEN "1110" =>

40、</p><p>  key_code <= 9; </p><p>  WHEN "1101" =></p><p>  key_code <= 10; </p><p>  WHEN "1011" =></p><p>  key_co

41、de <= 11; </p><p>  WHEN "0111" =></p><p>  key_code <= 12; </p><p>  WHEN OTHERS =></p><p><b>  NULL;</b></p><p>

42、;<b>  END CASE;</b></p><p>  WHEN "0111" =></p><p>  CASE column IS</p><p>  WHEN "1110" =></p><p>  key_code <= 13; </p

43、><p>  WHEN "1101" =></p><p>  key_code <= 14; </p><p>  WHEN "1011" =></p><p>  key_code <= 15; </p><p>  WHEN "

44、0111" =></p><p>  key_code <= 16; </p><p>  WHEN OTHERS =></p><p><b>  NULL</b></p><p><b>  END CASE;</b></p><p>

45、  WHEN OTHERS =></p><p>  key_code <= 15; </p><p><b>  END CASE;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p&g

46、t;  ---------------------------顯示------------------------------</p><p>  process (clk)</p><p>  variable count :integer range 0 to 6000;</p><p><b>  begin</b></p>

47、<p>  if(clk'event and clk='1') then</p><p>  if count=6000 then</p><p>  cnt<=cnt+1;</p><p><b>  count:=0;</b></p><p><b>  else&

48、lt;/b></p><p>  count:=count+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  -----------------

49、----------位顯示--------------------------</p><p>  process(cnt)</p><p><b>  begin</b></p><p>  if(key_code<10)then</p><p>  led_sel<="11111110&quo

50、t;; state<=key_code-(key_code/10)*10;</p><p><b>  else</b></p><p>  case cnt is</p><p>  when "000" => led_sel<="11111101"; state<=key_co

51、de/10;</p><p>  when "001" => led_sel<="11111110"; state<=key_code-(key_code/10)*10;</p><p>  when others=> led_sel<="11111111"; </p><p>

52、;<b>  end case;</b></p><p><b>  end if;</b></p><p>  end process ;</p><p>  -----------------------------段顯示-----------------------------</p><p>

53、;  process (clk)</p><p><b>  begin </b></p><p>  if(clk'event and clk='1') then</p><p>  case state is</p><p>  when 0 => led_out<="1

54、1000000";</p><p>  when 1 => led_out<="11111001";</p><p>  when 2 => led_out<="10100100";</p><p>  when 3 => led_out<="10110000"

55、;</p><p>  when 4 => led_out<="10011001";</p><p>  when 5 => led_out<="10010010";</p><p>  when 6 => led_out<="10000010";</p>

56、<p>  when 7 => led_out<="11111000";</p><p>  when 8 => led_out<="10000000";</p><p>  when 9 => led_out<="10010000";</p><p>  wh

57、en others=>null;</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process; </p><p>  end Behavior;</p><p>  數(shù)碼管學

58、號滾動顯示 </p><p><b> ?。ㄒ唬嶒災康?lt;/b></p><p>  (1)掌握VHDL語言的語法規(guī)范,掌握時序電路描述方法。</p><p>  (2)掌握多個數(shù)碼管動態(tài)掃描顯示的原理及設(shè)計方法。</p><p> ?。?)掌握硬件系統(tǒng)設(shè)計方法(自底向上或自頂向下),熟悉VHDL語言三種設(shè)計風格,熟悉其

59、芯片硬件實現(xiàn)的過程。</p><p><b> ?。ǘ嶒瀮x器</b></p><p>  PC機,ALtera CPLD硬件實驗開發(fā)系統(tǒng),設(shè)計軟件(Quartus II )</p><p><b> ?。ㄈ嶒瀮?nèi)容</b></p><p>  要求學生在六個數(shù)碼管滾動顯示自己的學號(六位),每

60、隔一定時間循環(huán)移位一次,學號為奇數(shù)則左移,學號為偶數(shù)則右移。間隔時間可由開關(guān)選擇1秒,2秒,3秒和4秒。</p><p><b> ?。ㄋ模嶒炘?lt;/b></p><p>  為使得輸入控制電路簡單且易于實現(xiàn),采用動態(tài)掃描的方式實現(xiàn)設(shè)計要求。動態(tài)掃描顯示需要由兩組信號來控制:一組是字段輸出口輸出的字形代碼,用來控制顯示的字形,稱為段碼;另一組是位輸出口輸出的控制信號

61、,用來選擇第幾位數(shù)碼管工作,稱為位碼。</p><p>  各位數(shù)碼管的相同段是并聯(lián)的,段碼的輸出對各位數(shù)碼管來說都是相同的。因此在同一時刻如果各位數(shù)碼管都處于點亮狀態(tài),6位數(shù)碼管將顯示相同的字符。若要各位數(shù)碼管能夠顯示出與本位相應的字符,就必須采用掃描顯示方式,即在某一時刻,只讓某一位處于點亮狀態(tài),而其它各位處于滅燈狀態(tài)。同時,段碼輸出相應位要顯示字符的字型碼。這樣在同一時刻,只有選通的那一位顯示出字符,而其它

62、各位則是熄滅的,如此循環(huán)下去,就可以使各位數(shù)碼管顯示出要顯示的字符。</p><p>  雖然這些字符是在不同時刻出現(xiàn)的,而且同一時刻,只有一位顯示,其它各位熄滅,但由于數(shù)碼管具有余輝特性和人眼有視覺暫留現(xiàn)象,只要每位數(shù)碼管顯示間隔足夠短,給人眼的視覺假象就會連續(xù)穩(wěn)定地顯示。</p><p>  總之,多個數(shù)碼管動態(tài)掃描顯示,是將所有數(shù)碼管相同段并聯(lián)在一起,通過選通信號分時控制各個數(shù)碼管的

63、公共端,循環(huán)點亮多個數(shù)碼管,并利用人眼的視覺暫留現(xiàn)象,只要掃描的頻率大于50Hz,將看不到閃爍現(xiàn)象。 6個數(shù)碼管則需要50*6=300Hz以上才能看到持續(xù)穩(wěn)定點亮的現(xiàn)象。</p><p><b> ?。ㄎ澹┰O(shè)計思路</b></p><p>  循環(huán)左滾動,始終點亮6個數(shù)碼管,左出右進。狀態(tài)為:010101-101010-010101-101010-010101-101

64、010-010101</p><p><b>  主要思路如下:</b></p><p>  (1) 各位數(shù)碼管的相同段是并聯(lián)的,段碼的輸出對各位數(shù)碼管來說都是相同的。因此在同一時刻如果各位數(shù)碼管都處于點亮狀態(tài),6位數(shù)碼管將顯示相同的字符。若要各位數(shù)碼管能夠顯示出與本位相應的字符,就必須采用掃描顯示方式,即在某一時刻,只讓某一位處于點亮狀態(tài),而其它各位處于滅燈狀態(tài)。&

65、lt;/p><p>  (2)為實現(xiàn)移位,定義了字符串向量,這樣只需要將s(5 downto 1)<=s(4 downto 0);s(0)<=s(5);即可實現(xiàn)左移。</p><p>  (3)加入按鍵控制count{led1_r,led2_r},在1s時鐘的控制下,count:從00-01-10-11轉(zhuǎn)變即可實現(xiàn)間隔時間1秒,2秒,3秒和4秒(單位狀態(tài)轉(zhuǎn)移,時間為1s)。&

66、lt;/p><p><b>  (六)硬件實現(xiàn)</b></p><p>  這個實驗要注意的問題和上一個實驗基本相同。這個實驗涉及到動態(tài)顯示,所以還要特別注意clk和clk1s的設(shè)置,后者要比前者大的多才能實現(xiàn)動態(tài)顯示。</p><p>  程序編譯通過后連接硬件并進行下載,下載成功則可以實現(xiàn)學號的動態(tài)顯示和左移,并通過按鍵選擇左移的周期。<

67、/p><p><b> ?。ㄆ撸嶒灴偨Y(jié)</b></p><p> ?。ò耍?附錄(VHDL源程序)</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned

68、.all;</p><p>  entity num_display is</p><p>  port(clk,k1,k2:in std_logic;</p><p>  led1,led2,led3:out std_logic;</p><p>  seg:out std_logic_vector(7 downto 0);</p&

69、gt;<p>  dig:out std_logic_vector(7 downto 0)</p><p><b>  );</b></p><p>  end entity;</p><p>  architecture main of num_display is</p><p>  signal f

70、lag:integer range 0 to 5;</p><p>  signal clk1s,clk0_5s:std_logic;</p><p>  signal state:integer;</p><p>  signal cnt:std_logic_vector(2 downto 0);</p><p>  type str is

71、 array(5 downto 0)of integer;</p><p>  signal s:str:=(0,1,0,1,0,5);-----數(shù)字用你的學號替換。</p><p>  signal led1_r,led2_r,led3_r:std_logic;</p><p><b>  begin</b></p><p

72、>  --------------------------產(chǎn)生1s時鐘---------------------------------</p><p>  process(clk)</p><p>  variable count:integer range 0 to 6000000;</p><p><b>  begin</b>&l

73、t;/p><p>  if clk'event and clk='1' then</p><p>  if count=6000000 then </p><p>  clk1s<=not clk1s;</p><p><b>  count:=0;</b></p><p&g

74、t;<b>  else </b></p><p>  count:=count+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>

75、  ------------------------------按鍵選擇-----------------</p><p>  process (k1,k2)</p><p><b>  begin</b></p><p>  if k1'event and k1='1' then</p><p>

76、;  led1_r<=not led1_r;</p><p><b>  end if;</b></p><p>  if k2'event and k2='1' then</p><p>  led2_r<=not led2_r;</p><p><b>  end if;

77、</b></p><p>  end process;</p><p>  led1<=not led1_r;</p><p>  led2<=not led2_r;</p><p>  led3<=not led3_r;</p><p>  -----------------------

78、----滾動顯示-----------------------------</p><p>  process (clk1s)</p><p>  variable count:std_logic_vector(1 downto 0);</p><p><b>  begin</b></p><p>  if(clk1s

79、'event and clk1s='1') then </p><p>  if count=(led1_r,led2_r)then</p><p>  s(5 downto 1)<=s(4 downto 0);--s(5 downto 1)<=s(4 downto 0);--如果為右移則改為s(4 downto 0)<=s(5 downto 1

80、);</p><p>  s(0)<=s(5);--s(0)<=s(5); --如果為右移則改為s(5)<=s(0);</p><p>  count:="00";</p><p><b>  else</b></p><p>  count:=count+1;</p>

81、<p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  ------------------------1s鐘閃爍基準-------------------------------------</p

82、><p>  process(clk)</p><p>  variable count:integer range 0 to 3000000;</p><p><b>  begin</b></p><p>  if clk'event and clk='1' then</p><

83、;p>  if count=3000000 then </p><p>  clk0_5s<=not clk0_5s;</p><p><b>  count:=0;</b></p><p><b>  else </b></p><p>  count:=count+1;</p&

84、gt;<p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  process(clk0_5s)</p><p><b>  begin</b></p&g

85、t;<p>  if clk0_5s'event and clk0_5s='1' then</p><p>  led3_r<=not led3_r;</p><p><b>  end if;</b></p><p>  end process;</p><p>  ----

86、-----------------------顯示------------------------------</p><p>  process (clk)</p><p>  variable count :integer range 0 to 6000;</p><p><b>  begin</b></p><p&g

87、t;  if(clk'event and clk='1') then</p><p>  if count=6000 then</p><p>  cnt<=cnt+1;</p><p><b>  count:=0;</b></p><p><b>  else</b>

88、;</p><p>  count:=count+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  -------------------------

89、-段選擇---------------------------</p><p>  process(cnt)</p><p><b>  begin</b></p><p>  case cnt is</p><p>  when "000" => dig<="01111111

90、"; state<=s(5);</p><p>  when "001" => dig<="10111111"; state<=s(4);</p><p>  when "010" => dig<="11011111"; state<=s(3);</p&

91、gt;<p>  when "011" => dig<="11101111"; state<=s(2);</p><p>  when "100" => dig<="11110111"; state<=s(1);</p><p>  when "101

92、" => dig<="11111011"; state<=s(0);</p><p>  when others=> dig<="11111111"; </p><p><b>  end case;</b></p><p>  end process ;</

93、p><p>  -----------------------------位顯示-----------------------------</p><p>  process (clk)</p><p><b>  begin </b></p><p>  if(clk'event and clk='1

94、9;) then</p><p>  case state is</p><p>  when 0 => seg<="11000000";</p><p>  when 1 => seg<="11111001";</p><p>  when 2 => seg<=&q

95、uot;10100100";</p><p>  when 3 => seg<="10110000";</p><p>  when 4 => seg<="10011001";</p><p>  when 5 => seg<="10010010";</p

96、><p>  when 6 => seg<="10000010";</p><p>  when 7 => seg<="11111000";</p><p>  when 8 => seg<="10000000";</p><p>  when 9 =

97、> seg<="10010000";</p><p>  when others=>null;</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process; </p

98、><p><b>  end main;</b></p><p><b>  教材及參考書</b></p><p>  1.楊曉慧 楊永健 《基于FPGA的EDA/SOPC技術(shù)與VHDL》 國防工業(yè)出版社 2007年7月</p><p>  2.《ALTERA CPLD實驗系統(tǒng)用戶手冊》 http:/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論