出租車計(jì)價(jià)器設(shè)計(jì)方案和功能介紹(verilog、fpga)_第1頁
出租車計(jì)價(jià)器設(shè)計(jì)方案和功能介紹(verilog、fpga)_第2頁
出租車計(jì)價(jià)器設(shè)計(jì)方案和功能介紹(verilog、fpga)_第3頁
出租車計(jì)價(jià)器設(shè)計(jì)方案和功能介紹(verilog、fpga)_第4頁
出租車計(jì)價(jià)器設(shè)計(jì)方案和功能介紹(verilog、fpga)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、出租車計(jì)價(jià)器設(shè)計(jì)方案和功能介紹(verilog、fpga) 導(dǎo)讀:就愛閱讀網(wǎng)友為您分享以下“出租車計(jì)價(jià)器設(shè)計(jì)方案和功能介紹(verilog、fpga)”資訊,希望對您有所幫助,感謝您對的支持!1 出租車計(jì)價(jià)器設(shè)計(jì)方案和功能介紹 2目錄一、系統(tǒng)的總體設(shè)計(jì)方案 . . 41功能模塊關(guān)系圖 . 42設(shè)計(jì)描述 . 43 按鍵功能介紹 . 74 開關(guān)功能介紹 . 85 狀態(tài)表示介紹表 . 8二、主要模塊的設(shè)計(jì)代碼 . . 101控制模塊 . 102 里程計(jì)數(shù)模塊 . 153 時(shí)鐘模塊 . 174 等待時(shí)間計(jì)數(shù)模塊 . 195 計(jì)價(jià)模塊 . 206 數(shù)碼管驅(qū)動(dòng)模塊(有小數(shù)點(diǎn)) . . 257 尾燈模塊 .

2、 29三、總結(jié)感想(這是編程中遇到的一些問題的處理方法) . 311 復(fù)位鍵(reset )的使用心得 . . 312 關(guān)于,有用信號(hào)leap=1,是否需要讓leap=0的問題。 . . 313 在一個(gè)Verilog 文件中,不可以在兩個(gè)always 模塊中同時(shí)操作一個(gè)變量。 . 324 數(shù)碼管閃爍 . 32 5 對于一些取值不能為0的變量,如year ,month 等,應(yīng)該賦給初始值,以免顯示出錯(cuò)。. 3236 對于reset 這樣的點(diǎn)擊鍵應(yīng)該寫成點(diǎn)擊形式,加上消抖程序。不應(yīng)該用連加,以避免出錯(cuò)。. 327 關(guān)于按鍵檢測問題 . 328 怎么獲得一個(gè)變量,某時(shí)刻和該時(shí)刻之前的變量? . .

3、32 9 每一個(gè)verilog 模塊不能包含太多阻塞賦值語句,否則編譯器會(huì)報(bào)錯(cuò)。盡可能多用非阻塞語句賦值。 . . 34附錄:總設(shè)計(jì)圖 . . 35 4 出租車計(jì)價(jià)器設(shè)計(jì)方案和功能介紹一、系統(tǒng)的總體設(shè)計(jì)方案1功能模塊關(guān)系圖 2設(shè)計(jì)描述 本數(shù)字鐘有10個(gè)模塊組成,分頻器模塊、消抖模塊、控制模塊、等待時(shí)間計(jì)數(shù)模塊、時(shí)鐘模塊、里程計(jì)算模塊、計(jì)價(jià)模塊、顯示模塊、數(shù)碼管驅(qū)動(dòng)模塊、尾燈模塊。1 分頻器模塊:將開發(fā)板提供的50MHz 的時(shí)鐘,分頻成1Hz 、4Hz 、1KHz 和6MHz 的時(shí)鐘信號(hào),供各模塊使用。52 消抖模塊:處理按鍵毛刺,產(chǎn)生穩(wěn)定信號(hào)3控制模塊:(1) 白天近程和遠(yuǎn)程單價(jià),晚上近程和遠(yuǎn)

4、程單價(jià)(2) 白天起步價(jià),晚上起步價(jià)(3) 等待每分鐘價(jià)格(4) 起步價(jià)可行公里數(shù),遠(yuǎn)程和近程分界線(5) 白天晚上開始時(shí)間4等待時(shí)間計(jì)數(shù)模塊:在state=1(計(jì)價(jià)器已經(jīng)打開)且run=0(出租車暫停)時(shí),開始計(jì)時(shí)。產(chǎn)生數(shù)據(jù)單位為分鐘,最小值位1分鐘,沒有小數(shù)。5 時(shí)鐘模塊:對1Hz 時(shí)鐘信號(hào)進(jìn)行處理,實(shí)現(xiàn)時(shí)分秒循環(huán)計(jì)數(shù),構(gòu)成時(shí)鐘。6里程計(jì)算模塊:對1Hz 時(shí)鐘作為模擬信號(hào)源,模擬每秒走0.2Km 。輸出數(shù)據(jù)單位為千米,最小值為1千米,沒有小數(shù)。7計(jì)價(jià)模塊:計(jì)價(jià)模塊位本出租車計(jì)價(jià)器中最核心和重要的模塊,如果該模塊編好,計(jì)價(jià)器就完成了一半。對里程模塊輸出數(shù)據(jù)進(jìn)行處理,統(tǒng)計(jì)出在白天近程(pric

5、e_day_short)、白天遠(yuǎn)程(price_day_long)、晚上近程(price_night_short)、晚上遠(yuǎn)程(price_night_long)單價(jià)內(nèi),行駛的里程數(shù)cnt1、cnt2、cnt3、cnt4。6對時(shí)鐘模塊時(shí)鐘進(jìn)行處理,判斷出現(xiàn)在是白天還是晚上,給里程單價(jià)和起步價(jià)提供判斷依據(jù)。對等待時(shí)間計(jì)數(shù)模塊輸出數(shù)據(jù)處理,計(jì)算出等待時(shí)間所產(chǎn)生的金額??偟挠?jì)價(jià)公式=起步價(jià)+price_day_short*cnt1+price_day_long*cnt2+price_night_short*cnt3+price_night_long*cnt4+等待金額8 顯示模塊:(1) 金額和里程顯

6、示(2) 等待時(shí)間顯示(3) 時(shí)鐘時(shí)分秒顯示(4) 設(shè)置時(shí)單價(jià)顯示(5) 設(shè)置時(shí)等待價(jià)格顯示(6) 設(shè)置起步價(jià)顯示(7) 設(shè)置里程分界顯示(8) 設(shè)置白天和晚上開始時(shí)間顯示9 數(shù)碼管驅(qū)動(dòng)模塊:根據(jù)顯示模塊提供的段選、位選信號(hào)和小數(shù)點(diǎn)控制信號(hào),控制8個(gè)數(shù)碼管顯示數(shù)據(jù)。輸入信號(hào)必須為,每4個(gè)二進(jìn)制位為一組表示一位十進(jìn)制數(shù)(十進(jìn)制數(shù)09),小數(shù)點(diǎn)控制信號(hào)時(shí)8位的。10 尾燈模塊:尾燈模塊用8個(gè)LED 燈顯示車的轉(zhuǎn)向狀態(tài),用兩個(gè)7開關(guān)模擬出租車左轉(zhuǎn)和右轉(zhuǎn)。左轉(zhuǎn)時(shí):8個(gè)LED 燈從右向左依次循環(huán)點(diǎn)亮;右轉(zhuǎn)時(shí):8個(gè)LED 燈從左向右依次循環(huán)點(diǎn)亮。在車處于計(jì)價(jià)等待時(shí)間時(shí),8LED 燈閃爍。 3 按鍵功能介紹

7、 共有四個(gè)按鍵,reset (復(fù)位鍵)、set (設(shè)置鍵)、start (開始計(jì)價(jià)/加鍵)、run(運(yùn)行狀態(tài)控制/減鍵) 。 1 reset鍵:按一次state=0,復(fù)位,顯示金額和里程數(shù)。 2 set鍵:每按一次,state 狀態(tài)加一。state 共有014的15個(gè)狀態(tài),set 鍵只能在114之間連續(xù)循環(huán);reset 鍵能夠讓state 置0。 3 start鍵:該鍵有兩個(gè)功能第一功能:當(dāng)state=0時(shí),start 有三個(gè)狀態(tài)控制start_out=1、2、0(start_out初始值時(shí)0,表示按一次鍵后計(jì)價(jià)器開始計(jì)價(jià))計(jì)價(jià)器開始計(jì)價(jià)、停止計(jì)價(jià)(計(jì)價(jià)結(jié)束,顯示數(shù)據(jù))、數(shù)據(jù)清零。設(shè)置好價(jià)格數(shù)

8、據(jù)后,start 鍵每按三次就是一次循環(huán),也就是拉完一個(gè)客人。 第二功能:當(dāng)state !=0時(shí),負(fù)責(zé)該狀態(tài)設(shè)置數(shù)值加1。 4 run鍵:第一功能:當(dāng)start=0且start_out=1時(shí),有兩個(gè)狀態(tài)run_out=1、0(run_out初始值為1,表示按一次后車狀態(tài)為停止)車運(yùn)行、車停止。run 鍵每按一次在運(yùn)行和停止變換一次第二功能:state !=0,負(fù)責(zé)該狀態(tài)設(shè)置數(shù)值減1。84開關(guān)功能介紹LED_LEFT開關(guān):當(dāng)出租車要左轉(zhuǎn)時(shí),打開該開關(guān)。8個(gè)LED 燈從右向左依次循環(huán)點(diǎn)亮。LED_RIGHT開關(guān):當(dāng)出租車要左轉(zhuǎn)時(shí),打開該開關(guān)。8個(gè)LED 燈從左向右依次循環(huán)點(diǎn)亮。5 狀態(tài)表示介紹表9

9、 10二、主要模塊的設(shè)計(jì)代碼這里只列舉控制模塊、里程計(jì)數(shù)模塊、時(shí)鐘模塊、等待時(shí)間計(jì)數(shù)模塊、計(jì)價(jià)模塊、數(shù)碼管驅(qū)動(dòng)模塊、尾燈模塊。分頻模塊、消抖模塊和顯示模塊不在列舉。1控制模塊由于該模塊重復(fù)代碼太多了,直接去了一部分。但是,該模塊還是完整地模塊,所缺少只是其它狀態(tài)下對其它數(shù)據(jù)的設(shè)置,和狀態(tài)4b3和4b4很相似。該模塊最經(jīng)典的時(shí),start 和run 鍵雙功能設(shè)置。 /控制模塊/控制計(jì)價(jià)器開始/停止/控制出租車狀態(tài)走/停module control(clk, /50MHz reset, /復(fù)位set, /狀態(tài)切換start, /計(jì)費(fèi)啟動(dòng)開關(guān)run, /出租車運(yùn)行狀態(tài)開關(guān)price_day_shor

10、t, /白天近程單價(jià)price_day_long, /白天遠(yuǎn)程單價(jià)price_night_short, /晚上近程單價(jià) price_night_long, /晚上遠(yuǎn)程單價(jià)11price_wait_time, /等待時(shí)間每分鐘價(jià)格one_price_day, /白天起步價(jià)one_price_night, /晚上起步價(jià)short_distance, /起步價(jià)可行最大里程數(shù)long_distance, /最大近程里程數(shù)day_time, /白天開始時(shí)間night_time, /晚上開始時(shí)間start_out,run_out,state,password /更改信息的密碼);inputclk,rese

11、t,set,start,run;input 5:0 password;output7:0 price_day_short,price_day_long,price_night_short,price_night_long,price_wait_time; output 11:0 one_price_day,one_price_night;output 7:0 short_distance,long_distance;output 7:0 day_time,night_time;output 3:0 state,start_out;outputrun_out;reg7:012price_day_

12、short,price_day_long,price_night_short,price_night_long,price_wait_time;reg 11:0 one_price_day,one_price_night;reg 7:0 short_distance,long_distance;reg 7:0 day_time,night_time;reg 3:0 state,start_out;regrun_out,add,sub; initial /為了處理小數(shù)點(diǎn),把實(shí)際價(jià)格擴(kuò)大十倍beginday_time=5; /白天開始時(shí)間night_time=23; /晚上開始時(shí)間short_di

13、stance=3; /起步價(jià)可行最大里程數(shù)long_distance=10; /最大近程里程數(shù)price_day_short=24; /實(shí)際價(jià)格2.4元price_day_long=36; /實(shí)際價(jià)格3.6元price_night_short=31; /實(shí)際價(jià)格3.1元price_night_long=47; /實(shí)際價(jià)格4.7元one_price_day=140; /實(shí)際價(jià)格14元one_price_night=180; /實(shí)際價(jià)格18元price_wait_time=10; /實(shí)際價(jià)格1元 end13initialbeginstate=4d0;end always(posedgeclk)be

14、ginif(reset=1) /復(fù)位鍵 state=4d0;if(set=1) /總狀態(tài)設(shè)置 if(state=4d14)state=4d1; elsestate=state+4d1; / start/run第一功能區(qū) if(start=1&state=0) /state=0,該功能可用 /計(jì)費(fèi)啟動(dòng)鍵,每按一次取反一次。if(start_out=4d2) start_out=4d0; /總狀態(tài)設(shè)置 elsestart_out=start_out+4d1;14 if(start_out=0) run_out=1;if(start_out=1&run=1&state=0) /出租車行駛狀態(tài)鍵,沒按

15、一次取反一次。 beginrun_out=run_out; end / start/run第二功能區(qū) add=start; /加, 第二功能sub=run; /減, 第二功能if(password=6b010101) /密碼正確才能更改價(jià)格和參數(shù)case(state)4d0:;4d1:;4d2:;4d3:beginif(add=1) /白天近程單價(jià)設(shè)置 if(price_day_short=8d99) price_day_short=8d0;15 elseprice_day_short=price_day_short+8d1;if(sub=1)if(price_day_short=8d0) p

16、rice_day_short=8d99;elseprice_day_short=price_day_short-8d1;end4d4: /白天遠(yuǎn)程單價(jià)設(shè)置beginif(add=1)if(price_day_long=8d99) price_day_long=8d0;elseprice_day_long=price_day_long+8d1;if(sub=1)if(price_day_long=8d0) price_day_long=8d99;elseprice_day_long=price_day_long-8d1;endendcaseend endmodule2 里程計(jì)數(shù)模塊/里程計(jì)算模塊

17、module distance(clk, /1Hzstart, /計(jì)費(fèi)啟動(dòng)開關(guān)16run, /出租車運(yùn)行狀態(tài)開關(guān)distance /里程);inputclk,run;input 3:0 start;output 15:0 distance;reg 15:0 distance,count,count1; always(posedgeclk)beginif(start=0) count=0; /清零 if(start=1&run=1)beginif(count1=4) begin count1=0;count=count+1; end /為了方便模擬,出租車每秒走0.2Kmelse count1=

18、count1+1;end distance=count; 17endendmodule3 時(shí)鐘模塊/時(shí)鐘模塊/為系統(tǒng)提供時(shí)間module clock(clk, /1Hz時(shí)鐘hour_out, /時(shí),顯示時(shí)間min_out, /分,顯示時(shí)間sec_out, /秒, 顯示時(shí)間 );inputclk;output 7:0 hour_out,min_out,sec_out; reg 7:0 hour_out,min_out,sec_out;initialbegin hour_out=12;min_out=0;sec_out=0; endalways (posedgeclk)18begin if(sec

19、_out59)beginsec_out=sec_out+7b1;end if(sec_out=59)beginsec_out=0;if(min_out59) min_out=min_out+7b1;end if(min_out=59)beginmin_out=0;if(hour_out23) hour_out=hour_out+7b1;end if(hour_out=23)begin hour_out=0;19 endendendmodule4 等待時(shí)間計(jì)數(shù)模塊 /等待時(shí)間模塊modulewait_time (clk, /1Hzstart, /計(jì)費(fèi)啟動(dòng)開關(guān)run, /出租車運(yùn)行狀態(tài)開關(guān)led_

20、stop,wait_time /等待時(shí)間);inputclk,run;input 3:0 start;output 15:0 wait_time;outputled_stop;reg 15:0 wait_time,count;regled_stop; always(posedgeclk) begin20 if(start=0) wait_time=0; /清零if(start=1&run=0) /計(jì)價(jià)開關(guān)為1,且車狀態(tài)位0,開始計(jì)時(shí)beginled_stop=1;if(count10) count=count+16b1;/為了便于模擬,每10s ,當(dāng)做一分鐘else begin count=0

21、;wait_time=wait_time+1;endendelsebeginled_stop=0;end endendmodule5 計(jì)價(jià)模塊/ 計(jì)價(jià)模塊/根據(jù)里程、時(shí)鐘、等待時(shí)間計(jì)算出總價(jià) /里程:判斷遠(yuǎn)程和近程/時(shí)鐘:判斷白天和晚上/價(jià)格單位:元/里程單位:千米/等待時(shí)間單位:分鐘21 /時(shí)間和里程為整數(shù)/價(jià)格為小數(shù)module charge(clk, /50MHz start, /計(jì)費(fèi)啟動(dòng)開關(guān) run, /出租車運(yùn)行狀態(tài)開關(guān) distance,/里程 hour,/時(shí)鐘,時(shí) min,/時(shí)鐘,分 sec,/時(shí)鐘,秒 wait_time,/等待時(shí)間 day_time,/白天開始時(shí)間 night

22、_time,/晚上開始時(shí)間 short_distance,/起步價(jià)可行最大里程數(shù) long_distance,/最大近程里程數(shù) price_day_short,/白天近程單價(jià) price_day_long,/白天遠(yuǎn)程單價(jià) price_night_short,/晚上近程單價(jià) price_night_long,/晚上遠(yuǎn)程單價(jià) one_price_day,/白天起步價(jià) one_price_night,/晚上起步價(jià) price_wait_time,/等待時(shí)間每分鐘價(jià)格22 charge, /總費(fèi)用total_charge,total_distance);inputclk,run;input 3:0 s

23、tart;input 7:0 hour,min,sec,day_time,night_time;input 7:0 short_distance,long_distance; input 7:0 price_day_short,price_day_long,price_night_short,price_night_long,price_wait_time;input 11:0 one_price_day,one_price_night;input 15:0 distance,wait_time;output 15:0 charge;output 15:0 total_charge,total

24、_distance;reg 15:0 one_price,charge;reg 15:0 distance1,distance2;reg 15:0 total_charge,total_distance;reg 15:0 cnt1; /白天近程里程數(shù)reg 15:0 cnt2; /白天遠(yuǎn)程里程數(shù)reg 15:0 cnt3; /晚上近程里程數(shù) reg 15:0 cnt4; /晚上遠(yuǎn)程里程數(shù)23reg flag,flag1; always(posedgeclk)beginif(start=0) /清零beginflag=0;flag1=1;cnt1=0;cnt2=0;cnt3=0;cnt4=0;o

25、ne_price=0;end if(start=1&flag=0)beginflag=1;if(hour=day_time&hour=night_time) one_price=one_price_day; /白天,起步價(jià)else one_price=one_price_night; /夜晚,起步價(jià)24 enddistance1=distance; /檢測該時(shí)鐘與該時(shí)鐘之前時(shí)鐘的變量值,是否相等。有變化則執(zhí)行下面語句。 distance2=distance1; if(distance2!=distance1) /白天近程、白天遠(yuǎn)程、晚上近程、晚上遠(yuǎn)程各價(jià)位里程數(shù)計(jì)數(shù) beginif(start

26、=1&distanceshort_distance)beginif(hour=day_time&hour=night_time) /白天if(distance=long_distance) cnt1=cnt1+1; /近程else cnt2=cnt2+1; /遠(yuǎn)程else /夜晚if(distance=long_distance) cnt3=cnt3+1; /近程else cnt4=cnt4+1; /遠(yuǎn)程endend /總費(fèi)用 /為了處理小數(shù),該價(jià)格以被擴(kuò)大十倍 25charge=one_price+cnt1*price_day_short+cnt2*price_day_long+cnt3*p

27、rice_night_short+cnt4*price_night_long+wait_time*price_wait_time; if(start=2&flag1=1)beginflag1=0;total_charge=total_charge+charge; /統(tǒng)計(jì)每天總金額total_distance=total_distance+distance; /統(tǒng)計(jì)每天總里程end endendmodule6 數(shù)碼管驅(qū)動(dòng)模塊(有小數(shù)點(diǎn))/功能: 動(dòng)態(tài)八位數(shù)碼管掃描/輸入?yún)?shù):掃描時(shí)鐘clk_1k,待顯示的數(shù)據(jù)d/輸出參數(shù):數(shù)碼管段選輸出sm_seg,數(shù)碼管位選輸出sm_bit/備 注:待顯示的數(shù)

28、據(jù)為16進(jìn)制格式, 例如輸入0x12345678,顯示12345678/ DP7 DP6 DP5 DP4 DP3 DP2 DP1 DP0 /小數(shù)點(diǎn)位:數(shù)碼管八數(shù)碼管七數(shù)碼管六 數(shù)碼管五 數(shù)碼管四 數(shù)碼管三 數(shù)碼管二 數(shù)碼管一 / D31:28 D27:24 D23:20 D19:16 D15:12 D11:8 D7:4 D3:0/數(shù)據(jù)位: 數(shù)碼管八數(shù)碼管七數(shù)碼管六 數(shù)碼管五 數(shù)碼管四 數(shù)碼管三 數(shù)碼管二 數(shù)碼管一 module led_drive3(clk_1k,D,DP,sm_seg,sm_bit);26input clk_1k; /輸入時(shí)鐘input31:0 D; /數(shù)據(jù)輸入端input7

29、:0 DP; /數(shù)碼管小數(shù)點(diǎn)控制信息 output7:0 sm_seg; /數(shù)碼管段選輸出sm_seg output7:0 sm_bit; /數(shù)碼管位選輸出sm_bit reg7:0 sm_seg_r; /數(shù)碼管段選輸出寄存器 reg7:0 sm_bit_r; /數(shù)碼管位選輸出寄存器 reg3:0 disp_dat; /定義顯示數(shù)碼寄存器reg2:0 count; /定義計(jì)數(shù)寄存器assign sm_seg = sm_seg_r; /輸出數(shù)碼管譯碼結(jié)果 assign sm_bit = sm_bit_r; /輸出數(shù)碼管選擇always (posedge clk_1k) /定義上升沿觸發(fā)進(jìn)程 be

30、gincount= count +1b1;endalways (posedge clk_1k)begincase(count) /選擇掃描顯示數(shù)據(jù)3d7 : disp_dat = D31:28; /第八個(gè)數(shù)碼管 3d6 : disp_dat = D27:24; /第七個(gè)數(shù)碼管 3d5 : disp_dat = D23:20; /第六個(gè)數(shù)碼管 3d4 : disp_dat = D19:16; /第五個(gè)數(shù)碼管273d3 : disp_dat = D15:12; /第四個(gè)數(shù)碼管3d2 : disp_dat = D11:8; /第三個(gè)數(shù)碼管3d1 : disp_dat = D7:4; /第二個(gè)數(shù)碼管3

31、d0 : disp_dat = D3:0; /第一個(gè)數(shù)碼管default :disp_dat = 0;endcasecase(count) /選擇數(shù)碼管顯示位3d7 : sm_bit_r = 8b1111_1110; /選擇第八個(gè)數(shù)碼管顯示 3d6 : sm_bit_r = 8b1111_1101; /選擇第七個(gè)數(shù)碼管顯示 3d5 : sm_bit_r = 8b1111_1011; /選擇第六個(gè)數(shù)碼管顯示 3d4 : sm_bit_r = 8b1111_0111; /選擇第五個(gè)數(shù)碼管顯示 3d3 : sm_bit_r = 8b1110_1111; /選擇第四個(gè)數(shù)碼管顯示 3d2 : sm_bi

32、t_r = 8b1101_1111; /選擇第三個(gè)數(shù)碼管顯示 3d1 : sm_bit_r = 8b1011_1111; /選擇第二個(gè)數(shù)碼管顯示 3d0 : sm_bit_r = 8b0111_1111; /選擇第一個(gè)數(shù)碼管顯示 default :sm_bit_r = 8b1111_1111;endcaseend always (disp_dat) /高電平:關(guān)閉小數(shù)點(diǎn) 低電平:打開小數(shù)點(diǎn) begincase (disp_dat)/七段譯碼 /小數(shù)點(diǎn)位 /不控制小數(shù)點(diǎn)位284h0 : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b100_0000;

33、end /顯示”0” 4h1 : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b111_1001; end /顯示”1” 4h2 : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b010_0100; end /顯示”2” 4h3 : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b011_0000; end /顯示”3” 4h4 : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b001_1001; end /顯示”4” 4

34、h5 : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b001_0010; end /顯示”5” 4h6 : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b000_0010; end /顯示”6” 4h7 : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b111_1000; end /顯示”7” 4h8 : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b000_0000; end /顯示”8” 4h9 : begin s

35、m_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b001_0000; end /顯示”9”4ha : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b000_1000; end /顯示”a” 4hb : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b000_0011; end /顯示”b” 4hc : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b100_0110; end /顯示”c” 4hd : begin sm_seg_r7=DPco

36、unt-1b1; sm_seg_r6:0 = 7b010_0001; end /顯示”d” 4he : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b000_0110; end /顯示”e”/保留一個(gè)狀態(tài),用于閃屏,因此不顯示f/4hf : begin sm_seg_r7=DPcount-1b1; sm_seg_r6:0 = 7b000_1110; end /顯示”f” default:beginsm_seg_r7=1b1; sm_seg_r6:0 = 7b111_1111; end /不顯示, 數(shù)碼管,熄滅endcase29endendmodule

37、7尾燈模塊module tail_light(clk, /4Hz時(shí)鐘led_left, /左轉(zhuǎn)燈信號(hào)led_stop, /停止燈信號(hào)led_right, /右轉(zhuǎn)信號(hào)led /8位LED 燈輸出控制端 );inputclk,led_left,led_stop,led_right; output 7:0 led;reg 7:0 led,led_l,led_s,led_r;initial /初始化beginled_l=8b0000_0001;led_s=8b0000_0000;led_r=8b1000_0000; endalways(posedgeclk)30 beginif(led_left=0&led_stop=0&led_right=0) led=8b0000_0000; /清屏 if(led_left=1) /左轉(zhuǎn), 從右向左依次點(diǎn)亮8個(gè)LED 燈beginif(led_l=8b1000_0000) led_l=8b0000_0001;elseled_l=led_l1; led=led_l; end if(led_stop=1) /停止,8

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論