eda課程設(shè)計--八位數(shù)碼管掃描顯示電路的設(shè)計_第1頁
已閱讀1頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《EDA技術(shù)及應用》</p><p><b>  課程設(shè)計報告</b></p><p>  題 目: 八位數(shù)碼管掃描顯示電路的設(shè)計 </p><p>  院 (系): 機電與自動化學院 </p><p>  專業(yè)班級: 電氣自動化技術(shù)1001 <

2、;/p><p>  學生姓名: </p><p>  學 號: </p><p>  指導教師: </p><p>  2012年 6月10日至2012年 6月23日</p><

3、p>  《EDA技術(shù)及應用》課程設(shè)計任務書</p><p><b>  目 錄</b></p><p>  1.課程設(shè)計題目及要求...............................................7</p><p>  1.1課程設(shè)計題目...................................

4、.................7</p><p>  1.2課程設(shè)計要求....................................................7</p><p>  1.3系統(tǒng)總體方案設(shè)計................................................7</p><p>  2. LED的工作原理

5、...................................................8</p><p>  2.1 LED工作原理....................................................8</p><p>  2.2 LED動態(tài)掃描顯示原理...........................................

6、.9</p><p>  3.系統(tǒng)設(shè)計.........................................................9</p><p>  3.1硬件電路設(shè)計....................................................9</p><p>  3.2 VHDL代碼設(shè)計...........

7、........................................9</p><p>  4.運行調(diào)試......................................................,,13</p><p>  4.1時序仿真.......................................................13</

8、p><p>  4.2 硬件邏輯驗證..................................................,15</p><p>  4.3調(diào)試結(jié)果分析...................................................16</p><p>  4.4 調(diào)試中出現(xiàn)的問題及解決方法..............

9、.......................16</p><p>  5 總結(jié)..............................................,,,,,,,,,,,,,,,16</p><p>  6.參考文獻.........................................................17</p><p

10、>  7. 附錄1系統(tǒng)硬件電路圖............................................18</p><p>  附錄2實物照片..................................................19</p><p>  1.課程設(shè)計題目及要求</p><p><b>  1.1課程設(shè)計

11、題目</b></p><p>  八位數(shù)碼管靜態(tài)掃描顯示電路的設(shè)計</p><p><b>  1.2課程設(shè)計要求</b></p><p>  本課題要求掌握使用Quartus II設(shè)計數(shù)字系統(tǒng)的設(shè)計思路和設(shè)計方法。學習VHDL基本邏輯電路的綜合設(shè)計應用。掌握VHDL語言的語法規(guī)范,掌握時序電路描述方法。掌握多個數(shù)碼管動態(tài)掃描顯示的

12、原理及設(shè)計方法。</p><p>  設(shè)計一個八位數(shù)碼管共陰極動態(tài)掃描顯示控制電路,要求顯示學生自己的學號。利用實驗室設(shè)備完成系統(tǒng)設(shè)計并進行運行調(diào)試。</p><p>  1.3系統(tǒng)總體方案設(shè)計</p><p>  設(shè)計流程圖如下: 首先,我們要對所要設(shè)計的八位數(shù)碼管靜態(tài)掃描顯示電路充分理解,同時在了解了所給的硬件器材的基礎(chǔ)上需進行“源程序的編輯和編譯”——用

13、一定的邏輯表達手段將設(shè)計表達出來;其次要進行“邏輯綜合”——將用一定的邏輯表達手段表達出來的設(shè)計,經(jīng)過一系列的操作,分解成一系列的基本邏輯電路及對應關(guān)系;然后要進行“目標器件的布線∕適配”——在選定的目標器件中建立這些基本邏輯電路及對應關(guān)系;最后,目標器件的編程下載——將前面的軟件設(shè)計經(jīng)過編程變成具體的設(shè)計系統(tǒng),同時在設(shè)計過程中要進行有關(guān)“仿真”——模擬有關(guān)設(shè)計結(jié)果,看是否與設(shè)計構(gòu)想相符。</p><p><

14、;b>  系統(tǒng)結(jié)構(gòu)框圖如下:</b></p><p>  2. LED的工作原理</p><p>  2.1 LED工作原理</p><p>  LED為分段式半導體顯示器,通常稱為七段發(fā)光二極管顯示器。下圖為七段發(fā)光二極管顯示器共陰極和共陽極的電路圖。對共陰極顯示器的公共端應接地,給a-g輸入相應高電平,對應字段的發(fā)光二極管顯示十進制數(shù);對共陽極

15、的公共端應接+5V電源,給a-g輸入端相應低電平,對應字段的發(fā)光二極管也顯示十進制數(shù)。</p><p>  2.2 LED動態(tài)掃描顯示原理</p><p>  LED有段碼和位碼之分,所謂段碼就是讓LED顯示出“8.”的八位數(shù)據(jù),一般情況下要通過一個譯碼電路,將輸入的4位2進制數(shù)轉(zhuǎn)換為與LED顯示對應的8位段碼。位碼也就是LED的顯示使能端,對于共陽級的LED而言,高電平使能。要讓8個LE

16、D同時工作,顯示數(shù)據(jù),就是要不停的循環(huán)掃描每一個LED,并在使能每一個LED的同時,輸入所需顯示的數(shù)據(jù)對應的8位段碼。雖然8個LED是依次顯示,但是受視覺分辨率的影響,看到的現(xiàn)象是8個LED同時工作。</p><p>  多個數(shù)碼管動態(tài)掃描顯示,是將所有數(shù)碼管的相同段并聯(lián)在一起,通過選通信號分時控制各個數(shù)碼管的公共端,循環(huán)點亮多個數(shù)碼管,并利用人眼的視覺暫留現(xiàn)象,只要掃描的頻率大于50Hz,將看不到閃爍現(xiàn)象。&l

17、t;/p><p><b>  3 系統(tǒng)設(shè)計</b></p><p>  3.1 硬件電路設(shè)計</p><p>  3.2 VHDL程序設(shè)計</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p&

18、gt;  use ieee.std_logic_arith.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  use ieee.std_logic_signed.all;</p><p>  entity scan_seg8 is</p><p>  port(clk3,clk

19、5:in std_logic;</p><p>  rst: in std_logic;</p><p>  seg_da:out std_logic_vector(7 downto 0);</p><p>  seg_sel:out std_logic_vector(2 downto 0)</p><p><b>  );<

20、/b></p><p>  end scan_seg8;</p><p>  architecture ado of scan_seg8 is</p><p>  signal seg_buf1,seg_buf2,seg_buf3,seg_buf4,seg_buf0:std_logic_vector(3 downto 0);</p><p&

21、gt;  signal seg_buf5,seg_buf6,seg_buf7,seg_buf8:std_logic_vector(3 downto 0);</p><p>  signal seg_cnt:std_logic_vector(2 downto 0);</p><p>  signal seg_temp:std_logic_vector(3 downto 0);</p&g

22、t;<p>  signal clk:std_logic;</p><p><b>  begin</b></p><p>  process(clk5)</p><p><b>  begin</b></p><p>  if clk5'event and clk5='

23、;1' then</p><p>  clk<=not clk;</p><p><b>  end if;</b></p><p>  end process;</p><p>  process(clk5,rst)</p><p><b>  begin</b&g

24、t;</p><p>  if clk5' event and clk5='1' then</p><p>  if clk='1' then</p><p>  seg_buf1<="0010";</p><p>  seg_buf2<="0010"

25、;</p><p>  seg_buf3<="1000";</p><p>  seg_buf4<="0010";</p><p>  seg_buf5<="0000";</p><p>  seg_buf6<="0001";</p&

26、gt;<p>  seg_buf7<="0000";</p><p>  seg_buf8<="0010";</p><p><b>  else</b></p><p>  seg_buf1<="1111";</p><p> 

27、 seg_buf2<="1111";</p><p>  seg_buf3<="1111";</p><p>  seg_buf4<="1111";</p><p>  seg_buf5<="1111";</p><p>  seg_buf

28、6<="1000";</p><p>  seg_buf7<="0001";</p><p>  seg_buf8<="0000";</p><p><b>  end if;</b></p><p><b>  end if;<

29、;/b></p><p>  end process;</p><p>  process (clk3,rst)</p><p><b>  begin</b></p><p>  if clk3' event and clk3='1' then</p><p>  

30、if rst='1' then</p><p>  seg_cnt<="000";</p><p><b>  else</b></p><p>  seg_cnt<=seg_cnt+1;</p><p><b>  end if;</b></p

31、><p><b>  end if;</b></p><p>  end process;</p><p>  seg_sel<=seg_cnt;</p><p>  process(seg_cnt,seg_buf1,seg_buf2,seg_buf3,seg_buf4,seg_buf5,seg_buf6,seg_bu

32、f7,seg_buf8)</p><p><b>  begin</b></p><p>  case seg_cnt is</p><p>  when o"0" => seg_temp<=seg_buf1;</p><p>  when o"1" => seg

33、_temp<=seg_buf2; </p><p>  when o"2" => seg_temp<=seg_buf3; </p><p>  when o"3" => seg_temp<=seg_buf4; </p><p>  when o"4" => seg_

34、temp<=seg_buf5; </p><p>  when o"5" => seg_temp<=seg_buf6;</p><p>  when o"6" => seg_temp<=seg_buf7; </p><p>  when o"7" => seg_tem

35、p<=seg_buf8;</p><p>  when others=> seg_temp<="XXXX";</p><p><b>  end case;</b></p><p>  end process;</p><p>  process(seg_temp)</p>

36、;<p><b>  begin</b></p><p>  case seg_temp is</p><p>  when "0000"=> seg_da<="00111111";</p><p>  when "0001"=> seg_da<=

37、"00000110";</p><p>  when "0010"=> seg_da<="01011011";</p><p>  when "0011"=> seg_da<="01001111";</p><p>  when "0

38、100"=> seg_da<="01100110";</p><p>  when "0101"=> seg_da<="01101101";</p><p>  when "0110"=> seg_da<="01111101";</p>

39、;<p>  when "0111"=> seg_da<="00000111";</p><p>  when "1000"=> seg_da<="01111111";</p><p>  when "1001"=> seg_da<=&quo

40、t;01101111";</p><p>  when "1010"=> seg_da<="01110111";</p><p>  when "1011"=> seg_da<="01111100";</p><p>  when "1100&

41、quot;=> seg_da<="00111001";</p><p>  when "1101"=> seg_da<="01011110";</p><p>  when "1110"=> seg_da<="01111001";</p>&

42、lt;p>  when "1111"=> seg_da<="00000000";</p><p>  when others=> null;</p><p><b>  end case;</b></p><p>  end process;</p><p>

43、;  end architecture ado; </p><p><b>  4 運行調(diào)試</b></p><p><b>  4.1 時序仿真</b></p><p>  (1) 建立波形文件。選擇File項及其New,再選擇New窗中的Waveform Editer..項,打開波形編輯窗。</p>

44、<p> ?。?)輸入信號節(jié)點。在波形編輯窗的上方選擇Node項,在下拉菜單中選擇輸入信號,在彈出的窗口中首先點擊List鍵,這時左窗口將列出設(shè)計所以信號節(jié)點。由于設(shè)計者有時只需要觀察其中部分信號的波形,因此要利用中間的“=>”鍵將需要觀察的信號選到右欄中,然后點擊OK鍵即可將測試信號。</p><p> ?。?)設(shè)置波形參量。波形編輯窗中已經(jīng)調(diào)入了所有節(jié)點信號,在為編輯窗輸出信號測試前,首先

45、設(shè)定相關(guān)的仿真參數(shù)。</p><p> ?。?)設(shè)定仿真時間寬度。選擇File項及其End time選項,在End time選擇窗中選擇適當?shù)姆抡鏁r間域,以便有足夠長的觀察時間。 (5)波形文件存盤。選擇File項及其Save as選項,按OK鍵即可。</p><p> ?。?)運行仿真器,觀察分析波形。選中“processing”菜單下的“start siulation”,直到出

46、現(xiàn)“simulation was successful”對話框。把所有的參數(shù)都設(shè)定好了之后,就可以觀察相關(guān)的波形了。 </p><p>  4.2 硬件邏輯驗證</p><p>  (1)確認已經(jīng)打開了工程scan_seg8。</p><p> ?。?)打開“assignments”菜單下的“pins”命令,打開引腳鎖定窗口。</p><p

47、> ?。?)用鼠標雙擊“to”欄中的“<<new>>”,再出現(xiàn)的下拉欄中選擇本工程要鎖定的端口信號名(例如clk),然后雙擊對應的“l(fā)ocation”欄中的“<<new>>”,在出現(xiàn)的下拉欄中選擇對應端口信號名的器件引腳(例如對應clk,應選擇29)。</p><p>  (4)按前面提到的引腳信息添加鎖定引腳,全部輸入后單擊工具欄上的保存按鈕,保存引腳設(shè)置。

48、當冒個引腳鎖定后,我們在“to”欄下看到該引腳將是斜體顯示的,其他未鎖定引腳則是正體顯示。保持完畢,必須再編譯適配一次,才能將引腳鎖定到最終的下載文件中,此后就可以將編譯好的sof文件下載到實驗系統(tǒng)的FPGA中去了。</p><p><b>  4.3調(diào)試結(jié)果分析</b></p><p>  將生成的sof文件通過下載線下載到實驗箱中,進行相關(guān)的調(diào)試后正確顯示了自己的

49、學號。比如我的學號為20102822018,8位數(shù)碼管顯示的內(nèi)容應為20102822,018xxxxx。那么實驗就已經(jīng)成功了。</p><p>  4.4 調(diào)試中出現(xiàn)的問題及解決方法</p><p>  由于是第一次做這種課程設(shè)計。所以,難免會遇到一些問題。在將程序下載到試驗箱上時,沒有能如期望那樣顯示自己的學號。然后,我又從程序出發(fā)檢查了一遍,發(fā)現(xiàn)沒有錯誤,然后我又進行了一次功能仿真發(fā)現(xiàn)

50、波形圖也沒有問題。所以,我就可以大膽的排除程序錯誤而導致的結(jié)果。既然程序沒有錯誤,想必應該是在傳輸程序的這個環(huán)節(jié)出了問題。我又從選擇的芯片入手,發(fā)現(xiàn)芯片選擇沒有問題,而且各項參數(shù)設(shè)置也沒有問題。我開始懷疑是不是芯片上的管腳設(shè)置上出現(xiàn)了問題。于是,再請教了幾位同學之后我發(fā)現(xiàn)果然管腳設(shè)置上出了問題,當我將錯誤的地方修改過后終于在硬件電路上看到了自己期望的結(jié)果。</p><p><b>  5 總結(jié)</

51、b></p><p>  通過此次實驗我們進一步掌握QUARTUS II的的使用方法以及使用的各種規(guī)章流程。同時,通過此次實驗也加強了我對于VHDL 這門語言的更深刻的認識,讓我從感性上感知到了VHDL語言的獨特之處。以前在課堂上總是聽老說VHDL 語言與其他語言的不同就是VHDL 是面向硬件的語言,它是會占硬件電路大小的,之前我還是沒能體會到這句話的含義。當通過這次試驗后,我終于體會到了這句話的含義。&l

52、t;/p><p>  VHDL是EDA技術(shù)的重要組成部分,其具有與具體硬件電路無關(guān)和與設(shè)計平臺無關(guān)的特性,并且具有良好的電路行為描述和系統(tǒng)描述的能力,并在語言易讀性和層次化,結(jié)構(gòu)化設(shè)計方面,表現(xiàn)了強大的生命力和應用潛力。</p><p>  通過這次實驗不僅讓我專業(yè)知識得到了提高,同時也讓我自身的一些不良習慣,像馬虎,沒有耐心等得到改善。在設(shè)計時我們共同討論,互相學習,互相借鑒,讓我們同學之間

53、,師生之間關(guān)系變得更融洽!</p><p><b>  6. 參考文獻</b></p><p>  【1】 鄭燕,赫建國. 基于VHDL與Quartus II軟件的可編程邏輯器件應用于開發(fā).北京:國防工業(yè)出版社,2011.</p><p>  【2】Altera. Pin Information for the Cyclone III EP3C

溫馨提示

  • 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

提交評論