0.png (62.69 KB, 下載次數(shù): 98)
下載附件
2016-9-26 12:58 上傳
論文和源碼等所有完整資料下載:
健身自行車.rar
(1.35 MB, 下載次數(shù): 41)
2016-9-26 12:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
下面是部分內(nèi)容預覽:
------------------------------------------------------------------------------------------------------------------
東南大學電工電子實驗中心 實驗報告 課程名稱:數(shù)字邏輯設計實踐 第六次實驗 實驗名稱:可編程數(shù)字系統(tǒng)設計 院 (系):電工電子實驗中心 專 業(yè):吳健雄學院 姓 名:凌 昕 彤學 號:61009323 實 驗 室: 103實驗組別: 同組人員:實驗時間:2010年1月1日 評定成績:審閱教師: 1、申請題目:
2、狀態(tài)機設計思路:
- 啟動控制器 :在初始狀態(tài)下,按下“F”鍵即能啟動
- 選擇手動或者計時模式:通過按“1”或者“2”選擇手動或者計時模式
- 改變訓練強度:在手動或者計時模式下,通過數(shù)字鍵輸入選擇相應的模式
- 動態(tài)調(diào)整訓練強度:在訓練中,通過按下“A”或者“B”來增加或者減小阻力值
- 設置訓練時間:在計時模式下,逐位輸入數(shù)字,能夠設置訓練時間
- 訓練時間有誤可清零修改:如果使用者輸錯了時間,可以按“C”清除,顯示恢復00的狀態(tài)。
- 計數(shù)器的倒計時功能:能從給定的數(shù)字開始倒計時至00:00,并且從00:03開始使蜂鳴器響半秒,停半秒。
- 正確按鍵LED燈發(fā)光:每次按下正確的按鍵,LED亮一下,這可以提示使用者按鈕是否成功按下。
- 訓練時間有誤自動報錯:時間有誤自動報錯,顯示“EE”一秒,并退回到上一個狀態(tài)。
- 選擇自定義模式:通過按“A”或者“B”選擇或者設置訓練強度和時間
- 預設模式可以設置或者存儲訓練模式
1. 當使用者剛騎上自行車時,控制器處于初始狀態(tài)。按“F”鍵啟動控制器。 2. 使用者從鍵盤輸入 1或2 以選擇“手動”、“計時”模式,按“E”鍵確認。 3. 如果使用者輸入“1”(手動模式),顯示器顯示“9”,用戶可以輸入從0到9中的任意數(shù)字,以改變訓練強度,按“E”鍵確認。訓練強度選擇完成之后, 按下“F”按鈕開始訓練。 此時顯示器在高2位顯示阻力值。 4. 如果使用者輸入“2”(計時模式),控制器將提示用戶輸入從0到9中的任意數(shù)字,以選擇需要的訓練強度,按“E”鍵確認。訓練強度選擇完成之后,顯示器顯示“00:00”。通過數(shù)字鍵盤輸入數(shù)字, 以決定訓練的時間,輸入時數(shù)字順序是從左到右。例如,輸入1、0、2、3應該在顯示器上上顯示“10:23”,表示訓練時間被設定為10分23秒,如果輸入正確,按下“E”鍵確認。如果使用者輸錯了時間,可以按“C”清除,顯示恢復00的狀態(tài)。訓練時間輸入完成后,按下“開始”開始訓練。此時6位數(shù)碼管的高2位顯示阻力值,低四位倒計時顯示時間一直到“00:00”。在最后3秒時,蜂鳴器響3下,規(guī)律為響半秒停半秒。 當計時到00:00時,控制器恢復到初始狀態(tài),此時定時器是“00:00”,阻力為前面設定的值。 5. 每次按下正確的按鍵,LED亮一下,這可以提示使用者按鈕是否成功按下。 6. 在計時模式下,如果輸入的時間大于“60:00”或小于“01:00”,在按下“E”鍵確認后,顯示器顯示 EE,同時LED亮1秒,然后顯示返回00的狀態(tài)。 7. 增加動態(tài)調(diào)整訓練強度功能,在訓練過程中按“上”或“下”按鈕,實時增加或減少訓練強度。 8. 計時模式提供預設模式功能,可存儲10種訓練模式(訓練強度和時間預先設定好),設定過程如下: 1) 在基本功能2中,輸入A,選擇“自定義”模式,顯示“0”,直接按下“E”鍵,表示選擇“0”號預置訓練模式,此時顯示該模式的訓練強度和訓練時間。也可用鍵盤輸入“0”到“9”中的任何數(shù)字選擇相應預置訓練模式,按“E”確認,此時顯示該模式的訓練強度和訓練時間。選擇完成后按“開始”按鈕開始訓練。 2) 在基本功能2中,輸入B,選擇“自定義”模式,顯示“0”,用鍵盤輸入“0”到“9”中的任何數(shù)字選擇要設置的預置訓練模式,按下“預設”按鈕,顯示該模式原來預置的訓練強度值,參考基本功能3,重設預置訓練強度,按“E”確認,顯示器顯示該模式原來預置的訓練時間值,參考基本功能3,重設訓練時間,按下“E”鍵確認,再按下“預設”按鈕存儲預設值,回到基本功能初始狀態(tài)。 輸入:鍵盤 輸出:6位數(shù)碼管、代表蜂鳴器的LED燈和表示正確按鍵的LED燈
3、實現(xiàn)方案: 問題1:大量狀態(tài)的轉(zhuǎn)換問題。由于該數(shù)字系統(tǒng)狀態(tài)復雜,如果算入各類大小狀態(tài),共有28個,之間的轉(zhuǎn)換難以處理。 問題2:模60計數(shù)器難以同時實現(xiàn)模的設置和置數(shù)功能 問題3:鍵盤如何給出區(qū)別兩次相同按鍵而不是一次按鍵 問題4:實現(xiàn)訓練模式的寄存和調(diào)用 問題5:當輸入時間有誤,在按下“E”鍵確認后,顯示器顯示 EE,同時LED亮1秒,然后顯示返回00的狀態(tài)。 問題1解決方案A:考慮到28個狀態(tài),可以將部分子狀態(tài)歸結(jié)給一個大狀態(tài),比如輸入四位時間的四個子狀態(tài)可以歸一為狀態(tài)機的一個狀態(tài)。通過這種方法,狀態(tài)機一共需要產(chǎn)生的狀態(tài)只剩15種,而且當中大部分都是順序狀態(tài)轉(zhuǎn)移的,只有四處需要非順序狀態(tài)轉(zhuǎn)移。所以決定使用一個模16計數(shù)器74161來實現(xiàn)功能。配合一個16選1數(shù)據(jù)選擇器控制使能端,和若干與非門和數(shù)據(jù)選擇器通過同步置數(shù)方式來實現(xiàn)非順序狀態(tài)轉(zhuǎn)移。通過控制置零端實現(xiàn)狀態(tài)清零,比如倒計時到0.該方案并不難想到,但是實現(xiàn)還是有一定難度,主要是因為當中復雜的邏輯關系造成的。其思路并不是非常清晰,而且修改一部分可能會影響整體。但是實際電路設計中就使用了這方案。 問題1解決方案B:使用Rom。這個思路非常清晰,便于修改,實現(xiàn)方便。只需要將當前狀態(tài)和當前鍵盤輸入一起輸入到Rom的輸入端,即可以得到相應的狀態(tài)。對狀態(tài)數(shù)量、轉(zhuǎn)移方式均沒有要求,但是由于規(guī)定,沒有選擇這套方案。 問題2解決方案A:通過兩片74168模十加減計數(shù)器級聯(lián)。低位片的置數(shù)端特殊處理,使用74257八選四數(shù)據(jù)選擇器。當置數(shù)端信號有效時,將置數(shù)的起點選擇到置數(shù)端。而當置數(shù)信號無效時,到0101輸入到置數(shù)端。從而解決上述問題。 問題2解決方案B:直接使用Quartus內(nèi)部產(chǎn)生的函數(shù)器件,使其分別產(chǎn)生模為六和十的計數(shù)器,通過同步置數(shù)法解決問題。顯然,此法更加方便,優(yōu)于上述方案。 問題3解決方案A:將鍵盤的四位Col輸入通過一個與門和7474消抖電路輸出。使其能夠在按下一個鍵后,產(chǎn)生一個上升沿。而這個上升沿可以作為之后電路的時鐘信號。但是這個理論上可行的方案,在實際操作中產(chǎn)生了嚴重的問題。由于電路中的延遲情況未知,出現(xiàn)了大量上次按下的信號在本次按鍵中生效的現(xiàn)象。通過多種途徑分析電路,最終將鍵盤輸出的上升沿通過觸發(fā)器延遲一定時間后輸出效果明顯提高。但是這種方法直到最后來存在著一定的小問題沒有很好解決。 問題3解決方案B:和方案A相似地,通過觸發(fā)器使按下一個按鍵后產(chǎn)生一個單脈沖,寬度為一個正常的時鐘周期。而這個輸出作為使能端輸入到之后的電路模塊中,而之后的電路模塊的時鐘信號還是連接正常時鐘信號。這樣可以確保在按下一次按鍵,在模塊使能的時間里有且僅有一個上升沿。理論上說,本方案會優(yōu)于A方案,但是依然是延遲的問題。如上方案輸出的單脈沖依然落后與按鍵的信號,同時還產(chǎn)生了眾多競爭和毛刺,使電路變得十分不穩(wěn)定。所以最后方案B還是被放棄了。 問題4解決方案:最先由于不知道有器件Ram,導致設想的方案需要使用幾十片計數(shù)器當寄存器使用。但是知道了Ram之后,Ram顯然是不二選擇。當設置狀態(tài)時,即將置數(shù)的信號輸入到顯示端的同時,輸入到Ram。而在調(diào)用狀態(tài)時,從鍵盤輸入的信號改為從Ram輸入。 問題5解決方案:通過Quartus內(nèi)部產(chǎn)生的函數(shù)器件判斷當前的輸出,當符合條件時,Error輸出為1。通過一個信號控制數(shù)據(jù)選擇器使顯示端輸出的值為EE,并且使狀態(tài)機狀態(tài)轉(zhuǎn)移。這從理論上來說,是可以實現(xiàn)的。但是在實際過程中還是會出現(xiàn)各種問題需要解決。
4、系統(tǒng)結(jié)構(gòu):
1.002.jpg (24.77 KB, 下載次數(shù): 95)
下載附件
2016-9-26 12:57 上傳
鍵盤:輸出列掃描信號,接收行信號,并通過寄存器記下四位行信號和四位列信號。將上述八位信號輸入至一個預先寫好的Rom,將其轉(zhuǎn)換為四位二進制碼。其對應關系為0000-1,0001-2,……,1001-0,1010-A,1011-B,……并且根據(jù)鍵盤是否被按下,輸出一個上升沿信號。相似地,能夠輸出一個提示正確按鍵的信號。電路圖如下:
1.003.jpg (50.58 KB, 下載次數(shù): 99)
下載附件
2016-9-26 12:57 上傳
控制器:接受來自鍵盤的按鍵信號和上升沿信號。以上升沿為時鐘,通過觸發(fā)器和組合電路實現(xiàn)狀態(tài)的轉(zhuǎn)移。最后給出當前的狀態(tài)值。同時能夠接受時間顯示器的進位反饋信號,當計時至0時,異步將狀態(tài)清零。電路圖如下;
1.004.jpg (44.62 KB, 下載次數(shù): 97)
下載附件
2016-9-26 12:57 上傳
力度顯示器:接受來自控制器的當前狀態(tài)值,鍵盤產(chǎn)生的上升沿信號以及通過濾過器后有鍵盤產(chǎn)生的信號(該信號只為數(shù)字,即0~9)。力度最終所有的輸出都顯示在前兩位數(shù)碼管上。在合適的狀態(tài)下,將數(shù)字信號輸入到Rom并使其通過最后兩片74169的置數(shù)使其顯示。同時通過“A”“B”鍵能動態(tài)地控制顯示結(jié)果,即當前阻力值。電路圖如下:
1.005.jpg (72.08 KB, 下載次數(shù): 499)
下載附件
2016-9-26 12:57 上傳
時間顯示器:時間顯示器相對復雜。在輸入時間的大狀態(tài)下,需要有四個子狀態(tài)來控制具體是哪位時間值在被設置。需要使用一個74194作為次狀態(tài)機,來控制四位數(shù)碼管信號的置數(shù)信號。并且需要計數(shù)到00:00時,能給出一個借位信號,使狀態(tài)機狀態(tài)清零。同時由于預設功能和倒計時功能的存在,需要多處使用數(shù)據(jù)選擇器。同時由于清零功能、報錯功能、末三秒提示功能等需要實現(xiàn)結(jié)構(gòu)異常復雜。在此,為了簡化其復雜性,將當前狀態(tài)值輸入至一個Rom。而將Rom的輸出給至各位控制端、選擇端以及使能端,控制時間顯示器的工作。但是不管怎么樣,僅從電路的結(jié)構(gòu)和規(guī)模看出,時間顯示器是最復雜的一個模塊。電路圖如下:
1.006.jpg (21.99 KB, 下載次數(shù): 95)
下載附件
2016-9-26 12:57 上傳
鍵盤:輸入:列掃描信號; 輸出:行掃描信號、上升沿信號、鍵盤碼四位信號 控制器:輸入:上升沿信號、鍵盤碼四位信號、計數(shù)借位信號 輸出:四位當前狀態(tài) 力度顯示器:輸入:四位當前狀態(tài)、上升沿信號、鍵盤碼四位信號(判斷是否為“A”“B”) 輸出:力度顯示的兩位數(shù)碼管 時間顯示器:輸入:四位當前狀態(tài)、上升沿信號、鍵盤碼四位信號(判斷是否為“A”“B”) 輸出:時間顯示的四位數(shù)碼管以及四位數(shù)碼管的使能信號、借位信號
5、狀態(tài)流程圖: 0000:初始狀態(tài) 0001:手動/計時模式選擇狀態(tài) 0010:輸入力度 0011:確認 0100:開始訓練 0101:輸入力度 0110:輸入時間 0111:確認 1000:開始訓練 1001:選擇預設的訓練模式 1010:確認 1011:開始訓練 1100:選擇需要設置的訓練模式號 1101:輸入時間 1110:輸入力度
(框中的編號即是對應著一個狀態(tài),同時也是狀態(tài)機產(chǎn)生的具體狀態(tài)編碼。)
1.007.jpg (35.04 KB, 下載次數(shù): 101)
下載附件
2016-9-26 12:57 上傳
6、各主要模塊圖與仿真波形
- 各模塊的仿真波形,詳細注釋輸入輸出功能端口,波形意義
鍵盤波形圖:
1.008.jpg (15.02 KB, 下載次數(shù): 106)
下載附件
2016-9-26 12:57 上傳
CLKF:快速時鐘信號,頻率較高 CLK:正常時鐘信號,有CLKF通過分頻器產(chǎn)生,頻率大約為前者的1/16 Ip_Row:行輸出掃描信號 Ip_Col:列輸入信號 OEN:鍵盤給出的上升沿信號 q:鍵盤的四位二進制編碼
控制器波形圖:
1.009.jpg (12.72 KB, 下載次數(shù): 91)
下載附件
2016-9-26 12:57 上傳
A:當前狀態(tài)值 CLR:清零信號 RCO:借位信號 ERROR:錯誤信號 KEY_EN:鍵盤上升沿信號 KEY:鍵盤按鍵信號
力度顯示器波形圖:
1.010.jpg (13.41 KB, 下載次數(shù): 99)
下載附件
2016-9-26 12:57 上傳
CLKF:快速時鐘信號 Q:鍵盤給出的四位二進制編碼 STATE_CODE:狀態(tài)編碼信號 KEY_EN:鍵盤上升沿信號 FH:力度數(shù)碼管的高位 FL:力度數(shù)碼管的低位
時間顯示器波形圖:
1.011.jpg (20.3 KB, 下載次數(shù): 98)
下載附件
2016-9-26 12:57 上傳
CLKF:快速時鐘信號 CLK_1Hz:用于計時的1Hz方波信號 S:當前狀態(tài)碼 Q:鍵盤輸入的四位二進制編碼 QHH,QHL,QLH,QLL:依次為時間數(shù)碼管顯示的數(shù)字,順序是由高位到低位 RCO:借位信號 ERROR:錯誤信號 SOUND_EN:蜂鳴器使能信號
7、設計總結(jié) 從上述設計過程中,可以看出原先是打算一次性將提高和基礎部分做完的,但是畢竟通過電腦編程,畫線路圖對我們而言來說陌生的。當中經(jīng)歷了多次挫折,花了很多時間,也正是由于時間關系,最終做出了艱難的選擇:放棄了預設部分。但是在整個設計過程中,預設等內(nèi)容,包括狀態(tài)和器件,都已經(jīng)基本完成了設計。但是由于時間原因,最后沒有將已經(jīng)完成的預設部分調(diào)試成功。這也是本次實驗遺憾的地方。或許,當初在構(gòu)思的時候,就可以選擇先完成基礎部分,然后再通過部分修改的形式增加提高部分。這種思路應該更加符合可編程數(shù)字系統(tǒng)設計的,而不是像我這樣企圖一口氣吃成胖子。
- 調(diào)試過程中出現(xiàn)的問題分析及其解決措施
調(diào)試過程中,出現(xiàn)的一個最明顯的問題就是鍵盤給的上升沿信號的位置一直有問題,導致置數(shù)一直不正確。出現(xiàn)本次按鍵置上一次按鍵的數(shù)的情況。但是在之后,通過多種方式增加了該上升沿的延遲,使其出現(xiàn)時,鍵盤信號已經(jīng)明顯穩(wěn)定后才輸出。最終基本上解決了這個問題。
由于我們制作的系統(tǒng)是一個和我們生活很近的操作系統(tǒng)。因而提高方向應該更加人性化、更加便于操作、更加接近我們使用的電子控制系統(tǒng)。在此,我主要有幾個設想: - 在具體輸入某一位時間時,該位時間處于閃爍狀態(tài)。
- 每次按鍵有蜂鳴器發(fā)音提示
- 可以選擇具體數(shù)位修改時間
事實上,設想1已經(jīng)努力使用電路去實現(xiàn)(但最后還是未能實現(xiàn))。而設想2則通過正確按鍵提示燈改造即可實現(xiàn)。
雖然不用親自動手搭電路,省去了許多搭線之苦,但是必須掌握對quartus軟件的熟練使用方法。在設計電路時,尤其是所需的器件較多,各部分聯(lián)系比較復雜時,必須采用模塊化設計。在調(diào)試過程中,必須先分模塊調(diào)試,最后進行總的調(diào)試編譯。在調(diào)試過程中,警告一般可以忽略。 由于沒有使用器件的限制,因此可以最大程度的利用好quartus內(nèi)部提供的器件,以此來簡化電路設計。 |