【正文】
1=keyr=1101111111111001。 when 1011=keyr=1100111111011111。 when 1101=keyr=1111111101111111。 when 1111=keyr=1111111101111111。 end case。 點(diǎn)陣顯示 里 when 0001=keyr=1011111111111111。 when 0011=keyr=1011011011101101。 when 0101=keyr=1011011011101101。 when 0111=keyr=1000000000000001。 when 1001=keyr=1011011011101101。 when 1011=keyr=1011011011101101。 when 1101=keyr=1011111111111111。 when 1111=keyr=1111111111111111。 end case。 點(diǎn)陣顯示 2 when 0001=keyr=1111111111111111。 when 0011=keyr=1100111110001111。 when 0101=keyr=1100001111110011。 when 0111=keyr=1100100111110011。 when 1001=keyr=1100110011110011。 when 1011=keyr=1100111000000111。 when 1101=keyr=1100011110011111。 when 1111=keyr=1111111111111111。 end case。 點(diǎn)陣顯示 元 when 0001=keyr=0111111111011111。 when 0011=keyr=1101111111011101。 when 0101=keyr=1111100000011101。 when 0111=keyr=1111111111011101。 when 1001=keyr=1100000000011101。 when 1011=keyr=1011111111011101。 when 1101=keyr=1011111111011101。 when 1111=keyr=1000111111111111。 end case。 elsif s=0000 then case cdount is when 0000=keyr=1111110111111011。 when 0010=keyr=1111111101111011。 when 0100=keyr=0111110111100011。 when 0110=keyr=1011111001111010。 when 1000=keyr=1110101101000011。 when 1010=keyr=1110101111011011。 when 1100=keyr=1011111100011011。 when 1110=keyr=1011111111111011。 when others=keyr=1111111111111111。 elsif s=0001 then case cdount is when 0000=keyr=1111111111111111。 when 0010=keyr=1111111111111110。 出租車計(jì)費(fèi)器設(shè)計(jì) 第 15 頁(yè) 共 34 頁(yè) when 0100=keyr=1100000000001001。 when 0110=keyr=1110111011101101。 when 1000=keyr=1110111011101101。 when 1010=keyr=1100000000000101。 when 1100=keyr=0111111111111101。 when 1110=keyr=1111111111111101。 when others=keyr=1111111111111111。 elsif s=0010 then case cdount is when 0000=keyr=1111111011111111。 when 0010=keyr=1110001011110111。 when 0100=keyr=1110111011101011。 when 0110=keyr=1110110011001011。 when 1000=keyr=1010111011101011。 when 1010=keyr=1000111011101011。 when 1100=keyr=1110111011101001。 when 1110=keyr=1111111011111111。 when others=keyr=1111111111111111。 elsif s=0011 then case cdount is when 0000=keyr=1111111011111111。 when 0010=keyr=1111111101111111。 when 0100=keyr=1101011111001111。 when 0110=keyr=1101110011111111。 when 1000=keyr=1101111111111001。 when 1010=keyr=1100011111100111。 when 1100=keyr=1001111110111111。 when 1110=keyr=1111111001111111。 when others=keyr=1111111111111111。 elsif s=0100 then case cdount is when 0000=keyr=1011111111111111。 when 0010=keyr=1011011000000001。 when 0100=keyr=1011011011101101。 when 0110=keyr=1011011011101101。 when 1000=keyr=1011011011101101。 when 1010=keyr=1011011011101101。 when 1100=keyr=1011011000000001。 when 1110=keyr=1011111111111111。 when others=keyr=1111111111111111。 elsif s=0101 then case cdount is when 0000=keyr=1111111111111111。 when 0010=keyr=1111111111111111。 when 0100=keyr=1111111111111111。 when 0110=keyr=1100111111110011。 when 1000=keyr=1100111001110011。 出租車計(jì)費(fèi)器設(shè)計(jì) 第 17 頁(yè) 共 34 頁(yè) when 1010=keyr=1100000000000011。 when 1100=keyr=1111111111111111。 when 1110=keyr=1111111111111111。 when others=keyr=1111111111111111。 elsif s5 then case cdount is when 0000=keyr=0111111111011111。 when 0010=keyr=1011111111011101。 when 0100=keyr=1110011111011101。 when 0110=keyr=1111111111011101。 when 1000=keyr=1111111111011101。 when 1010=keyr=1011111111011101。 when 1100=keyr=1011111111011101。 when 1110=keyr=1011111111011111。 when others=keyr=1111111111111111。 end if。 將 16 16 數(shù)組的顯示模塊的行輸入端與 FPGA 內(nèi)的只讀存儲(chǔ)器 ROM 的 16位數(shù)據(jù)輸出端口相連, 16 個(gè)列控制端與一個(gè) 416 譯碼器的輸出相連,而譯碼器的輸入端和片選信號(hào)又與 FPGA 內(nèi)的列掃描控制模塊的輸出端口相連。 出租車計(jì)費(fèi)器設(shè)計(jì) 第 18 頁(yè) 共 34 頁(yè) 6 出租車計(jì)費(fèi)器的仿真結(jié)果 管腳分配 圖 3 管腳分配圖 出租車計(jì)費(fèi)器設(shè)計(jì) 第 19 頁(yè) 共 34 頁(yè) 模塊顯示仿真結(jié)果 圖 4 初始及復(fù)位后狀態(tài) 圖 5 顯示起步價(jià) 出租車計(jì)費(fèi)器設(shè)計(jì) 第 20 頁(yè) 共 34 頁(yè) 圖 6 白天出租價(jià)格 圖 7 行駛 4km 的價(jià)格 出租車計(jì)費(fèi)器設(shè)計(jì) 第 21 頁(yè) 共 34 頁(yè) 7 設(shè)計(jì) 總結(jié) 通過這次緊張而又充實(shí)的 EDA 課程設(shè)計(jì),我感受到了 VHDL語(yǔ)言和普通軟件語(yǔ)言之間的區(qū)別,也能夠更加熟練地運(yùn)用 VHDL 語(yǔ)言進(jìn)行邏輯電路的設(shè)計(jì)了,受益匪淺??僧?dāng)我在寫第一個(gè)分頻模塊的過程中就發(fā)現(xiàn)自己完全錯(cuò)了,程序?qū)懲旰筮M(jìn)行仿真,就是達(dá)不到預(yù)期的結(jié)果,要么輸出信號(hào)有毛刺,要么就是有延遲,回過頭來檢查程序,卻看不出有什么錯(cuò)誤。 在沒有進(jìn)行課程設(shè)計(jì)之前,我們的上機(jī)實(shí)踐從來沒有編寫過規(guī)模如此的數(shù)字電路系統(tǒng),最多就寫寫什么半加器,全加器,移位寄存器之類的小型實(shí)體。不僅如此,在寫完程序后,還要把程序下載到芯片內(nèi),連接相應(yīng)的電子器件,觀察真正的效果。 另外,在課程設(shè)計(jì) 的過程,我碰到了很多棘手的難題,雖然也進(jìn)行了苦思冥想,卻還是得不到解決方法,有時(shí)也有想放棄的念頭,不過終于還是堅(jiān)持了下來,完成了任務(wù),我意識(shí)到今后不管是在工作還是學(xué)習(xí)中,做工程項(xiàng)目都需要有忍耐力和堅(jiān)持。 use 。 use 。 時(shí)鐘輸入 Rst : in std_logic。 電機(jī)脈沖輸入 dn : in std_log