

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 電子綜合設計</b></p><p><b> 一、設計原理</b></p><p> 所謂表決器就是對于一個行為,由多個人投票,如果同意的票數過半,就認為此行為可行;否則如果否決的票數過半,則認為此行為無效。七人表決器顧名思義就是由七個人來投票,當同意的票數大于或者等于4 時,則認為同意;反之,當否決的票數大于
2、或者等于4 時,則認為不同意。</p><p><b> 二、分析討論</b></p><p> 七人表決器這一功能可以用C語言、匯編語言或VHDL編程后下載到單片機上實現,不過用VHDL編程不僅技術含量高而且能讓我們更熟練的掌握和使用quartus軟件的步驟和方法。所以我們是采用VHDL編程來實現的。</p><p><b>
3、 三、設計準備</b></p><p> 根據七人表決器的原理,我們的準備過程如下:</p><p> 1、使用Altera的Cyclone II器件,所用的芯片為EP2C35F672C8,開發(fā)平臺為quartus II。</p><p> 2、使用七個撥動開關(K1~K7)作為輸入變量來表示七個投票人,當撥動開關輸入為‘1’時,表示對應的人投同意
4、票,否則當撥動開關輸入為‘0’時,表示對應的人投反對票。</p><p> 3、使用一個七段數碼管來顯示同意的票數。</p><p> 4、使用七個LED(LED2~LED8)用來分別記錄投票人的個人投票結果,當LED亮起時就表示對應的投票人同意,否則就表示不同意。</p><p> 5、使用一個LED(LED1)來表示最終的投票結果,當LED1亮起時表示表決
5、通過,不亮時就表示表決不通過。</p><p> 6、使用一個撥動開關(K8)來達到復位要求,即需要復位時能夠達到同時清零數碼管的顯示結果和LED的顯示情況。</p><p> 7、軟件仿真成功后,通過專用的連接線再用硬件進行測試,并將硬件測試的結果以照片的形式做記錄。</p><p><b> 四、設計思路</b></p>
6、<p> 根據程序設計的一般步驟,我們首先設計出七人表決器的系統(tǒng)框圖,也就是說先要確定一個大的設計方向;然后再根據設計要求并結合系統(tǒng)框圖來設計程序流程圖;由程序流程圖來編寫VHDL程序,并畫出表決器的外圍引腳圖;再將程序用軟件仿真,軟件仿真成功后進行硬件測試。</p><p><b> 1、系統(tǒng)框圖如下:</b></p><p> 2、程序流程圖如下
7、:</p><p> Y N</p><p> 3、外圍管腳圖如下:</p><p> CLK LED1 </p><p> CLR
8、 LEDAG[0:6]</p><p> K[0:6] LED[0:6]</p><p><b> 注釋:</b></p><p><b> CLK:系統(tǒng)時鐘</b></p><p> CLR:復位引腳,當需要
9、復位時,按下該管腳對應的開關就可以復位。</p><p> K[0:6]:表決輸入,分別是七個撥動開關。</p><p> LED1:表示最終的投票結果,當LED1亮起時表示表決通過,不亮時就表示表決不通過。</p><p> LEDAG[0:6]:為七段數碼管,用來顯示同意的票數。</p><p> LED[0:6]:為七個LED(
10、LED2~LED8),用來分別記錄投票人的個人投票結果。</p><p> 五、VHDL源程序設計</p><p> 根據設計要求,我們組設計的七人表決器程序如下:</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> US
11、E IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY BJQ IS</p><p> PORT(CLK,CLR:IN STD_LOGIC; ----CLK為系統(tǒng)時鐘,CLR為復位按鍵</p><p> K:IN STD_LOGIC_VECTOR(6 DOWNTO 0); ----撥動開關輸入表決<
12、;/p><p> Result:OUT STD_LOGIC; ----顯示表決是否通過</p><p> LEDAG,LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); ----LEDAG為七段數碼管,用來顯示同意的人數;LED為七個指示燈,用來指示投票人的個人投票結果。</p><p> END ENTITY BJQ;<
13、;/p><p> ARCHITECTURE one OF BJQ IS</p><p><b> BEGIN</b></p><p> PROCESS(K) </p><p> VARIABLE shu:INTEGER; ----定義變量shu來統(tǒng)計同意的個數</p><p><
14、;b> BEGIN</b></p><p> IF (CLR='1') THEN ----不復位,即正常工作</p><p> LED<=K; ----將指示燈和投票人對應,即記名投票</p><p><b> shu:=0;</b></p>
15、<p> IF CLK'EVENT AND CLK='1' THEN</p><p> IF K(0)='1' THEN shu:=shu+1;END IF;</p><p> IF K(1)='1' THEN shu:=shu+1;END IF;</p><p> IF K(2)='
16、1' THEN shu:=shu+1;END IF;</p><p> IF K(3)='1' THEN shu:=shu+1;END IF;</p><p> IF K(4)='1' THEN shu:=shu+1;END IF;</p><p> IF K(5)='1' THEN shu:=shu+1
17、;END IF;</p><p> IF K(6)='1' THEN shu:=shu+1;END IF;</p><p> CASE shu IS ----指示燈顯示投票結果,數碼管顯示同意人數</p><p> WHEN 0 =>Result<='0';LEDAG<="01111
18、11";LED<=K;</p><p> WHEN 1 =>Result<='0';LEDAG<="0000110";LED<=K; </p><p> WHEN 2 =>Result<='0';LEDAG<="1011011";LED<=K;<
19、/p><p> WHEN 3 =>Result<='0';LEDAG<="1001111";LED<=K;</p><p> WHEN 4 =>Result<='1';LEDAG<="1100110";LED<=K;</p><p> WHEN
20、5 =>Result<='1';LEDAG<="1101101";LED<=K;</p><p> WHEN 6 =>Result<='1';LEDAG<="1111101";LED<=K;</p><p> WHEN 7 =>Result<='1
21、';LEDAG<="0100111";LED<=K;</p><p> WHEN OTHERS =>Result<='Z';LEDAG<="ZZZZZZZ";LED<=K;</p><p><b> END CASE;</b></p><p>
22、;<b> END IF;</b></p><p> ELSE -----啟動復位功能,同時復位指示燈和數碼管</p><p> Result<='0';</p><p> LEDAG<="0111111";</p><p> LED<=&qu
23、ot;0000000";</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END ARCHITECTURE one;</p><p><b> 六、仿真測試過程</b></p><p><
24、b> 1、創(chuàng)建工程</b></p><p> 首先啟動 Quartus II 軟件,點擊File>New Project Wizard,創(chuàng)建一個新的工程;輸入此工程所在的工作目錄(應為每個工程創(chuàng)建一個單獨的目錄)、工程名稱(通常和頂層設計實體名稱相同)、頂層設計實體名稱(每個工程只有一個);注意工作目錄不要建在默認位置,最好建立在自帶的 U 盤上。所選的芯片為 Cyclone II系列
25、的 EP2C35F672C8;最后點擊點擊 Finish,完成一個新工程的創(chuàng)建。</p><p><b> 2、建立程序文件</b></p><p> 1)在創(chuàng)建好設計工程后,選擇File>NEW…菜單</p><p> 2)在New 對話框中選擇Device Design Files 頁下的 VHDL File ,點擊OK 按鈕,
26、打開程序編輯器對話框,然后在輸入自己編寫的VHDL程序。</p><p> 3)程序輸入完成后,進行保存,然后再選擇菜單項 Processing→Start Compilation,或者通過點擊圖標進行編譯。</p><p><b> 3、管腳分配</b></p><p> 有以下兩種方法進行管腳分配:</p><p&
27、gt; 1)點擊Assignments 菜單下面的Assignment Editor,進入到引腳分配窗口;然后將需要分配管腳的信號放置在 To 下方,雙擊To 下方的《New》,選擇Node Finder,在Filter 窗口中選擇Pins:all,在Named 窗口中輸入“*”,點擊List 在Nodes Found 窗口出現所有信號的名稱,點擊中間的按鈕,則Selected Nodes 窗口下方出現被選擇的端口名稱,然后再雙擊OK
28、 按鈕,完成設置。</p><p> 2)點擊Assignments 菜單下面的Pin Planner也能進行管腳分配。</p><p> 3)本次設計所用到的管腳分配表如下:</p><p> 當管腳分配完之后一定要進行再進行一次全編譯,以使分配的管腳有效。</p><p> 4、對設計文件進行仿真</p><p
29、> 1)創(chuàng)建一個仿真波形文件,選擇QUARTUSII 軟件File>New,選取對話框中的Other File 標簽頁,從中選取Vector Waveform File,點擊OK 按鈕。</p><p> 2)設置仿真結束時間,選擇QUARTUS II 軟件的Edit>End Time命令,彈出線路束時間對話框,在Time 框中輸入仿真結束時間,點擊OK 按鈕。</p><
30、;p> 3)加入輸入、輸出端口,在波形編輯器窗口左邊的端口名列表區(qū)點擊鼠標右鍵,在彈出的右鍵菜單中選擇Insert Node or Bus…命令,在彈出的Insert Node or Bus 對話框中點擊Node Finder…按鈕。在出現的 Node Finder 界面中,在Filter 列表中選擇Pins:all,在Named 窗口中輸入“*”,點擊List 在Nodes Found 窗口出現所有信號的名稱,點擊中間的按鈕則
31、在Selected Nodes 窗口下方出現被選擇的端口名稱,雙擊OK 按鈕,完成設置。</p><p> 4)編輯輸入端口波形,即指定輸入端口的邏輯電平變化,根據仿真的需要輸入波形,最后選擇軟件的File>Save進行保存。</p><p> 5)指定仿真器設置,在仿真過程中有時序仿真和功能仿真之分,測試過程中選擇的是功能仿真,在 QUARTUS II 軟件中選擇 Tool&g
32、t;Simulator Tool 命令,打開仿真器工具窗口,首先產生功能仿真網表文件,點擊產生功能仿真網表的按鈕 Generate Functional Simulation Netlist,產生功能仿真網表,然后點擊開始仿真的 START 按鈕開始進行仿真,直到仿真進度條為100%時完成仿真。</p><p> 6)本次仿真的波形如下圖所示:</p><p> 從波形圖可以看出:當撥
33、動開關的輸入序列為“0100101”時,即同意的投票人數小于4時,用于顯示個人投票結果的LED(6)—LED(0)顯示序列也為“0100101”,這樣就實現了記名投票的功能;此時七段數碼管的LEDAG(6)—LEDAG(0)顯示為“1001111”,由于同意的投票人數只有3個,沒有超過4個人,所以最終的投票結果是不同意,即最終投票結果 Result 顯示為低電平。</p><p> 當撥動開關的輸入序列為“10
34、10111”時,即同意的投票人數大于4時,用于顯示個人投票結果的LED(6)—LED(0)顯示序列也為“1010111”,同樣也實現了記名投票的功能;此時七段數碼管的LEDAG(6)—LEDAG(0)顯示為“1101101”,由于同意的投票人數有5個,已經超過4個人,所以最終的投票結果是同意,即圖示最終投票結果 Result 顯示為高電平。</p><p> 5、從設計文件到目標器件的加載</p>
35、<p> 完成對器件的加載有兩種形式,一種是對目標器件進行加載文件,一種是對目標器件的配置芯片進行加載。我們在測試過程中采用的是對目標器件 EP2C35F672C8 進行加載的方法。</p><p> 1)使用下載電纜線將 PC 機與實驗系統(tǒng)連接起來。</p><p> 2)選擇 QUARTUS II 軟件的 Tool>Programmer 命令,進入編程器窗口,如
36、果沒有設置編程硬件,則編程硬件類型為 No Hardware,所以需要對編程硬件進行設置,點擊 Hardware Setup…編程硬件設置按鈕。</p><p> 3)點擊 Add Hardware 按鈕,出現 Add Hardware 對話框,在 Add Hardware 對話框中,測試過程中選擇的是 USB-Blaster[USB-0],配置模式選擇 JTAG,然后添加與工程對應的.sof 文件,在 Pro
37、gram/Configure 一欄打勾。點擊 Start 開始配置。</p><p><b> 七、硬件測試結果</b></p><p> 根據上述準備,我們組所做的七人表決器的硬件測試結果已用照片的形式記錄,如下面各圖所示:</p><p> K8為復位開關,當不需要復位時必須向上撥;當只有一個人同意時,如下圖所示,當K1向上撥時,對應
38、的 D2 點亮,并且七段數碼管的顯示為“1”,由于同意的人數小于4個,所以 D1不亮。</p><p> 當K1、K2向上撥時,對應的 D2、D3 點亮,并且七段數碼管的顯示為“2”。</p><p> 由于同意的人數小于4個,所以 D1不亮。</p><p> 當K1、K3、K5向上撥時,對應的 D2、D4、D5 點亮,并且七段數碼管的顯</p>
39、<p> 示為“3”。這表明了撥動開關和LED是一一對應的,也就是前面提到的記名投票功能。由于同意的人數小于4個,所以 D1不亮。</p><p> 4)當K1、K2、K3、K4向上撥時,對應的 D2、D3、D4、D5 點亮,并且七段數碼管的顯示為“4”,由于同意的人數大于3個,所以表決結果 D1 也會點亮。</p><p> 5)當K1、K3、K5、K6、K7向上撥時
40、,對應的 D2、D4、D6、D7、D8 點亮,并且七段數碼管的顯示為“5”,由于同意的人數大于3個,所以表決結果 D1 也會點亮。</p><p> 6)當K1、K2、K3、K4、K5、K6向上撥時,對應的 D2、D3、D4、D5、D6、D7 點亮,并且七段數碼管的顯示為“6”,由于同意的人數大于3個,所以表決結果D1 也會點亮。</p><p> 7)當K1、K2、K3、K4、K5、
41、K6、K7向上撥時,對應的D2、D3、D4、D5、D6、D7 、D8點亮,并且七段數碼管的顯示為“7”,由于同意的人數大于3個,所以表決結果 D1 也會點亮。</p><p> 8)K8為復位開關,在上圖的基礎上,即K1—K7均向上撥,數碼管顯示為“7”時,若此時將撥動開關K8向下?lián)埽瑒t數碼管顯示為“0”, D2—D8由亮變滅,表決最終結果 D1 也熄滅,即達到了復位要求,如下圖所示:</p>&
42、lt;p><b> 八、心得體會</b></p><p> 通過這次的課程設計,我從中學到了很多知識,并且鍛煉了自己的程序設計能力。從抽到題目開始,然后到圖書館去查找相關資料,通過各種資料的幫助,再根據設計要求設計框圖,然后編寫VHDL程序,上機進行程序調試、修改,再進行軟件仿真,得到仿真波形,最后下載到硬件上進行測試。在這個過程中,我遇到了很多棘手的問題,通過進一步查找資料和向指
43、導老師請教之后,這些問題才得到解決,雖然花掉了不少的時間,但我們還是在規(guī)定的時間里完成了任務。在這個過程中,通過反復的調試程序,讓我們對用VHDL語言編寫程序和單片機等有了更深入的認識和熟悉,并且使我們更好的掌握了 QUARTUS II 這個軟件的使用方法。通過不斷的仿真,不斷地嘗試,我們終于成功地得出了正確的結果。</p><p> 通過此次課程設計,使我們的綜合實踐能力、動手能力和設計能力得到了鍛煉和提高,
44、與此同時也讓我們發(fā)現其實要做好一個設計并不難,關鍵是看你怎么去對待它和付出多大的努力,并且也讓我更加懂得了怎樣去完成一個課程設計。在這次的設計過程中,我發(fā)現了自己的缺點和不足,在以后的學習和課程設計中我會不斷地改正和彌補。最后,我真誠的感謝陳老師和徐老師在這次的課程設計中給予我們的幫助,正是有了指導老師的教導,我們才順利的完成了這次課程設計。</p><p><b> 九、參考文獻</b>
45、</p><p> [1] 《EDA技術與CPLD/FPGA開發(fā)應用簡明教程》,李履信、沈建華,清華大學出版社</p><p> [2]《EDA技術與應用》第二版,譚會生、張昌凡,西安電子科技大學出版社</p><p> [3]《可編程器件EDA技術與實踐》,李國洪、沈明山,機械工業(yè)出版社</p><p> [4]《基于QUARTUS
46、 II 的CPLD/FPGA設計》,電子工業(yè)出版社</p><p> [5]《EDA技術與應用》,朱正偉,清華大學出版社</p><p><b> 十、附錄</b></p><p> 根據設計要求,我們組設計的七人表決器程序如下:</p><p> LIBRARY IEEE;</p><p&g
47、t; USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY BJQ IS</p><p> PORT(CLK,CLR:IN STD_LOGIC; ----CLK為系統(tǒng)時鐘,CLR為復位按鍵</p><p>
48、 K:IN STD_LOGIC_VECTOR(6 DOWNTO 0); ----撥動開關輸入表決</p><p> Result:OUT STD_LOGIC; ----顯示表決是否通過</p><p> LEDAG,LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); ----LEDAG為七段數碼管,用來顯示同意的人數;LED為七個指示燈
49、,用來指示投票人的個人投票結果。</p><p> END ENTITY BJQ;</p><p> ARCHITECTURE one OF BJQ IS</p><p><b> BEGIN</b></p><p> PROCESS(K) </p><p> VARIABLE shu:
50、INTEGER; ----定義變量shu來統(tǒng)計同意的個數</p><p><b> BEGIN</b></p><p> IF (CLR='1') THEN ----不復位,即正常工作</p><p> LED<=K; ----將指示燈和投票人對應,即記名投票<
51、/p><p><b> shu:=0;</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> IF K(0)='1' THEN shu:=shu+1;END IF;</p><p> IF K(1)='1' TH
52、EN shu:=shu+1;END IF;</p><p> IF K(2)='1' THEN shu:=shu+1;END IF;</p><p> IF K(3)='1' THEN shu:=shu+1;END IF;</p><p> IF K(4)='1' THEN shu:=shu+1;END IF;&
53、lt;/p><p> IF K(5)='1' THEN shu:=shu+1;END IF;</p><p> IF K(6)='1' THEN shu:=shu+1;END IF;</p><p> CASE shu IS ----指示燈顯示投票結果,數碼管顯示同意人數</p><p>
54、 WHEN 0 =>Result<='0';LEDAG<="0111111";LED<=K;</p><p> WHEN 1 =>Result<='0';LEDAG<="0000110";LED<=K; </p><p> WHEN 2 =>Result<
55、='0';LEDAG<="1011011";LED<=K;</p><p> WHEN 3 =>Result<='0';LEDAG<="1001111";LED<=K;</p><p> WHEN 4 =>Result<='1';LEDAG<=&
56、quot;1100110";LED<=K;</p><p> WHEN 5 =>Result<='1';LEDAG<="1101101";LED<=K;</p><p> WHEN 6 =>Result<='1';LEDAG<="1111101";LED&l
57、t;=K;</p><p> WHEN 7 =>Result<='1';LEDAG<="0100111";LED<=K;</p><p> WHEN OTHERS =>Result<='Z';LEDAG<="ZZZZZZZ";LED<=K;</p>&l
58、t;p><b> END CASE;</b></p><p><b> END IF;</b></p><p> ELSE -----啟動復位功能,同時復位指示燈和數碼管</p><p> Result<='0';</p><p> LEDAG&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七人表決器課程設計
- eda課程設計報告--七人表決器
- 數電七人表決器課程設計
- 《七人表決器的vhdl程序設計》
- 課程設計報告---四人表決器的設計
- 數電課程設計---八人表決器
- 微機原理課程設計報告--表決器的設計
- 十人表決器plc課程設計
- 課程設計---表決器數字電路設計
- 三人表決器電路的設計與安裝
- 五人人表決器-數字電路
- 基于51單片機的三人表決器設計
- 設計一個四變量的多數表決器
- 基于51單片機的無線投票表決器設計
- 課程設計--數字電路表決電路報告書
- 電子技術課程設計---基于stc51單片機實現八路搶答器與七路多數表決器功能合成
- 課程設計報告---四人搶答器
- 六人搶答器課程設計報告
- 課程設計報告--五人組搶答器控制設計
- 四人搶答器課程設計報告
評論
0/150
提交評論