- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 實驗目的 實驗功能 程式碼 波形模擬 下載規劃及接腳指定 燒錄至LP-2900 實驗結果 *第十六章 第十六章 交通號誌控制器實作 16-1 ?實驗目的 16-2 ?實驗功能 16-3 ?實驗步驟 16-4 ?程式碼 16-5 ?波形模擬 16-6 ?下載規劃及接腳指定 16-7 ?燒錄至LP-2900 16-8 ?實驗結果 16-1 紅綠燈號誌是以紅燈與綠燈狀態不斷的改變,以限制交通流量,進而紓解車潮。而紅綠燈的狀態又分為三種:紅燈、黃燈、綠燈。紅燈所代表的訊息為禁止通行,黃燈為警示即將從可通行狀態轉為禁止通行,綠燈為通行狀態。 紅綠燈在固定的時間內,不斷的改變狀態,例:(紅→綠→黃→紅→綠→黃) 如此般的週而復始,甚至於能夠顯示出倒數時間的字樣以及點陣式活動小人物的燈號。 16-2 只要將設計出之兩狀態不同的紅綠燈分別擺設於對向車道如圖16-1即可形成我們所需要之十字路口紅綠燈號誌。 圖16.1 十字路口紅綠燈示意圖 16-3 實驗步驟 在此實驗中我們使用的電路設計程式為MAX+PLUSII, 而設計之方式是採取VHDL Code再以階層式的設計,將 同一電路中某一功能的電路以其功能劃分,形成一個 獨立的電路模組,最後將這些獨立模組組合起來成為 我們的電路,此種設計方式可使得系統的維護性及偵 錯性大為提高。 當觸動重置(RESET)鍵時,系統將被重置回初始狀態(第 一組東西方向之紅燈亮、第二組南北方向綠燈亮),而當 需要以手動控制交通號誌的狀態時,可將手動控制(SET) 設為1,並將A、B從本來之”11”狀態更改為”01”便可使東 西向改變為紅燈,南北向改為綠燈。反之改為”10”則可使 東西向改為綠燈,南北方向改為紅燈。 動作說明: 圖16.2 設計流程圖 設計輸入 以VHDL設計內部電路 並加以組合 邏輯模擬 以波形模擬驗證所設計 電路之正確性 燒錄及實體模擬 待燒錄完成後開始 進行實體之模擬 電路佈局 在所採用之晶片上進行 對應腳位之佈局 設計完成 16-4 程式一:JK正反器 由於在紅綠燈電路中將使用到計數器的功能,故在此我們將撰寫JK正反器的程式碼,以下為JK正反器之VHDL碼: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY JKFF_A IS PORT( SET,RESET,J,K,CLK :IN STD_LOGIC; Q :OUT STD_LOGIC ); END JKFF_A; ARCHITECTURE A OF JKFF_A IS SIGNAL Q1: STD_LOGIC; BEGIN PROCESS(SET,RESET,CLK) BEGIN IF RESET= 1 THEN Q1= 0 ; ELSIF SET = 1 THEN Q1= 1; ELSIF CLKEVENT AND CLK = 1 THEN Q1 = (J AND NOT Q1) OR (NOT K AND Q1); 程式二:模數八之計數器 計數器是在序向邏輯中相當重要之元件,在除頻器或是狀態機中都需要使用。 以下為以三個JK正反鎖組合成的Mod8計數器之VHDL碼: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY RGY_MOD1 is PORT( SET,RESET,J,K,CLK :IN STD_LOGIC ; Y0,Y1,Y2,EN :OUT STD_LOGIC ); END RGY_MOd1; ARCHITECTURE A OF RGY_MOD1 IS COMPONENT JKFF_A PORT( SET,RESET,J,K,CLK :IN STD_LOGIC; Q :OUT STD_LOGIC ); END COMPONENT; END IF; END PROCESS; Q = Q1; END A; SIGNAL Y3,Y4,Y5,Y6 : STD_LOGIC; BEGIN IC0 : JKFF_A PORT MAP (SET,RESET,J , K,CLK,Y3); Y0=Y3; IC1 : JKFF_A PORT MAP (SET,RESET,Y3,Y3,CLK,Y4); Y1=Y4;
文档评论(0)