2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  電子線路設(shè)計(jì)報(bào)告</b></p><p>  (數(shù)字鐘及汽車尾燈)</p><p>  題目:數(shù)字鐘與汽車尾燈</p><p>  院系:電子與信息工程系</p><p><b>  班級:</b></p><p><b>  姓名:&

2、lt;/b></p><p><b>  學(xué)號:</b></p><p><b>  試驗(yàn)號:</b></p><p><b>  指導(dǎo)老師:</b></p><p><b>  2009.6.24</b></p><p> 

3、 【實(shí)驗(yàn)?zāi)康摹?①掌握可編程邏輯器件的應(yīng)用開發(fā)技術(shù)——設(shè)計(jì)輸入、編譯、仿真和器件編程;</p><p> ?、谑煜ひ环NEDA軟件——MAX+PlusⅡ的使用;</p><p> ?、壅莆誚erilog設(shè)計(jì)方法;</p><p> ?、苷莆辗帜K分層次的設(shè)計(jì)方法;</p><p> ?、萦肰erilog完成一個多功能數(shù)字鐘和汽車尾燈控制的設(shè)計(jì)。

4、</p><p>  【實(shí)驗(yàn)原理】 采用分模塊分層次的設(shè)計(jì)方法,用Verilog語言由頂層模塊逐層向下設(shè)計(jì),頂層模塊調(diào)用底層模塊來完成相應(yīng)的功能。完成電路的編譯與適配后進(jìn)行電路的仿真實(shí)驗(yàn),在仿真結(jié)果滿足實(shí)驗(yàn)要求的情況下進(jìn)行電路的配置,即將生成的*.sof文件下載到開發(fā)板上,驗(yàn)證實(shí)驗(yàn)結(jié)果。</p><p><b>  【實(shí)驗(yàn)開發(fā)環(huán)境】</b></p>&l

5、t;p>  ①開發(fā)軟件:MAX+PlusⅡ,其開發(fā)流程為設(shè)計(jì)輸入、編譯、仿真、和編程與驗(yàn)證。</p><p>  ②開發(fā)語言:Verilog,一種專門為ASIC設(shè)計(jì)而開發(fā)的,通常用于寄存器傳輸級(RTL)門電路級的描述,是一種相對低級的描述語言。</p><p> ?、蹖?shí)驗(yàn)板:EDA Pro2K實(shí)驗(yàn)開發(fā)系統(tǒng),是一種基于CPLD可編程邏輯器件的開發(fā)板。</p><p

6、><b>  【實(shí)驗(yàn)?zāi)K設(shè)計(jì)】</b></p><p>  多功能數(shù)字鐘系統(tǒng)組成</p><p>  圖1 多功能數(shù)字鐘系統(tǒng)組成框圖</p><p>  由上面的設(shè)計(jì)框圖容易看出,數(shù)字鐘部分的實(shí)驗(yàn)由主體電路和擴(kuò)展電路組成,其中主體電路主要是完成小時、分鐘、秒的顯示,通過分頻器得到秒脈沖,通過秒計(jì)數(shù)器完成60進(jìn)制的計(jì)數(shù),然后用譯碼電路完成秒

7、在數(shù)碼管上的顯示,分鐘和小時顯示的實(shí)現(xiàn)與秒類似,主要是脈沖不同而已,其中小時又分為12進(jìn)制和24進(jìn)制;擴(kuò)展電路是用來完成計(jì)時之外的一些附加功能,比如定時控制、仿電臺報(bào)時、自動報(bào)整點(diǎn)時數(shù)、觸摸報(bào)整點(diǎn)時數(shù)等。其詳細(xì)設(shè)計(jì)將在下面逐一提到。</p><p><b>  各模塊的設(shè)計(jì)及仿真</b></p><p>  數(shù)字鐘主體電路頂層模塊</p><p&g

8、t;  圖2 數(shù)字鐘主體電路的層次結(jié)構(gòu)圖</p><p>  數(shù)字鐘主體電路頂層模塊由三部分組成,小時計(jì)數(shù)器、分計(jì)數(shù)器和秒計(jì)數(shù)器,分計(jì)數(shù)器和秒計(jì)數(shù)器是60進(jìn)制的,用8位BCD碼表示,高4位為6進(jìn)制,0、1、2、3、4、5、0、1…這樣顯示;低4位為10進(jìn)制,0、1、2、3、4、5、6、7、8、9、0、1…這樣顯示。小時計(jì)數(shù)器用12進(jìn)制和24進(jìn)制同時計(jì)時,12進(jìn)制為01、02、03、04、05、06、07、08、0

9、9、10、12、01、02…這樣顯示;24進(jìn)制為00、01、02、03、04、05、06、07、08、09、10、12、13、14、15、16、17、18、19、20、21、22、23、00、01…這樣顯示。</p><p>  ② 6進(jìn)制計(jì)數(shù)器的設(shè)計(jì)及仿真</p><p>  在沒計(jì)數(shù)到5之前,每來一個CP脈沖計(jì)數(shù)就加1,到5時變?yōu)?.</p><p> ?、?,V

10、erilog代碼:</p><p>  //counter6.v 6進(jìn)制計(jì)數(shù)器</p><p>  module counter6(Q,nCR,EN,CP);</p><p>  input CP,nCR,EN; //時鐘CP、清零nCR、使能EN</p><p>  output[3:0] Q;</p><p>

11、  reg[3:0] Q;</p><p>  always@(posedge CP or negedge nCR)</p><p><b>  begin</b></p><p>  if(~nCR) Q<=4'b0000; //異步清零</p><p>  else if(~EN) Q<=Q;&

12、lt;/p><p>  else if(Q==4'b0101) Q<=4'b0000; //計(jì)數(shù)到5時賦值為0</p><p>  else Q<=Q+1'b1; //未計(jì)數(shù)到5時在時鐘來時加1</p><p><b>  end</b></p><p><b>  endm

13、odule</b></p><p><b> ?、颍抡娼Y(jié)果:</b></p><p>  圖3 6進(jìn)制計(jì)數(shù)器仿真截圖</p><p>  由仿真截圖可以看出在CP的上升沿來臨時輸出Q的值加1,計(jì)數(shù)到5時變?yōu)?</p><p>  0,繼續(xù)計(jì)數(shù),完成了6進(jìn)制計(jì)數(shù)器的功能。仿

14、真結(jié)果與實(shí)驗(yàn)的預(yù)期結(jié)果吻合,</p><p>  說明此模塊是成功的。</p><p><b>  Ⅲ,模塊符號圖:</b></p><p>  ③ 10進(jìn)制計(jì)數(shù)器的設(shè)計(jì)及仿真</p><p> ?、?,Verilog代碼:</p><p>  //counter10.v 10進(jìn)制計(jì)數(shù)器</

15、p><p>  module counter10(Q,nCR,EN,CP);</p><p>  input CP,nCR,EN; //時鐘CP、清零nCR、使能EN</p><p>  output[3:0]Q;</p><p>  reg[3:0]Q;</p><p>  always@(posedge CP or

16、negedge nCR)</p><p><b>  begin</b></p><p>  if(~nCR) Q<=4'b0000; //異步清零</p><p>  else if(~EN) Q<=Q;</p><p>  else if(Q==4'b1001) Q<=4'

17、b0000; //計(jì)數(shù)到9時賦值為0</p><p>  else Q<=Q+1'b1; //未計(jì)數(shù)到9時在時鐘來時加1</p><p><b>  end</b></p><p><b>  endmodule</b></p><p><b>  Ⅱ,仿真結(jié)果:<

18、;/b></p><p>  圖4 10進(jìn)制計(jì)數(shù)器仿真截圖</p><p>  由仿真截圖可以看出在CP的上升沿來臨時輸出Q的值加1,計(jì)數(shù)到9時變?yōu)?</p><p>  0,繼續(xù)計(jì)數(shù),完成了10進(jìn)制計(jì)數(shù)器的功能。仿真結(jié)果與實(shí)驗(yàn)的預(yù)期結(jié)果吻合,</p><p>  說明此模塊是成功的。</p&g

19、t;<p><b> ?、?,模塊符號圖:</b></p><p> ?、?60進(jìn)制計(jì)數(shù)器的設(shè)計(jì)及仿真</p><p><b>  模塊結(jié)構(gòu)圖如下</b></p><p>  圖5 60進(jìn)制計(jì)數(shù)器的層次結(jié)構(gòu)</p><p> ?、?,Verilog代碼:</p><p

20、>  //counter60.v 60進(jìn)制計(jì)數(shù)器</p><p>  module counter60 (Cnt,nCR,EN,CP);</p><p>  input nCR,EN,CP; //時鐘CP、清零nCR、使能EN</p><p>  output [7:0] Cnt; </p><p>  wire [7 :0] C

21、nt;</p><p><b>  wire ENP;</b></p><p>  counter10 UC0 (Cnt[3:0],nCR,EN,CP); //低4位調(diào)用10進(jìn)制計(jì)數(shù)器</p><p>  counter6 UC1(Cnt[7:4],nCR,ENP,CP);//高4位調(diào)用6進(jìn)制計(jì)數(shù)器</p><p>  

22、assign ENP=(Cnt[3:0]==4'h9);//低位計(jì)到9時向高位發(fā)送使能信號</p><p><b>  endmodule</b></p><p><b> ?、?,仿真結(jié)果:</b></p><p>  圖6 60進(jìn)制計(jì)數(shù)器仿真截圖_1</p><p>  圖7 60進(jìn)制

23、計(jì)數(shù)器仿真截圖_2</p><p>  由仿真截圖可以看出在CP的上升沿來臨時輸出Q的值加1,計(jì)數(shù)到59時為 </p><p>  0,繼續(xù)計(jì)數(shù),完成了60進(jìn)制計(jì)數(shù)器的功能。仿真結(jié)果與實(shí)驗(yàn)的預(yù)期結(jié)果吻合,</p><p>  說明此模塊是成功的。</p><p><b> ?、?,模塊符號圖:<

24、/b></p><p> ?、?12進(jìn)制計(jì)數(shù)器的設(shè)計(jì)及仿真</p><p>  Ⅰ,Verilog代碼:</p><p>  //counter12.v 12進(jìn)制計(jì)數(shù)器</p><p>  module counter12(CntH,CntL,nCR,EN,CP);</p><p>  input CP,nCR

25、,EN; //時鐘CP、清零nCR、使能EN</p><p>  output[3:0] CntH,CntL;//高4位和低4為輸出</p><p>  reg[3:0] CntH,CntL;</p><p>  always@(posedge CP or negedge nCR)</p><p><b>  begin</

26、b></p><p>  if(~nCR) {CntH,CntL}<=8'h00; //異步清零</p><p>  else if(~EN) {CntH,CntL}<={CntH,CntL};</p><p>  else if((CntH>1)||((CntH==1)&&(CntL>=2)))</p&

27、gt;<p>  {CntH,CntL}<=8'h01;//非法計(jì)數(shù)情況均置數(shù)為8'h01</p><p>  else if((CntH==0)&&(CntL==9))</p><p>  {CntH,CntL}<=8'h10;//到9時變?yōu)?0</p><p>  else if((CntH==1

28、)&&CntL<2) //11與12 的計(jì)數(shù)</p><p><b>  begin </b></p><p>  CntH<=CntH;</p><p>  CntL<=CntL+1'b1; </p><p><b>  end</b></p>

29、;<p><b>  else</b></p><p><b>  begin</b></p><p>  CntH<=CntH; //其它情況低位加1計(jì)數(shù)</p><p>  CntL<=CntL+1'b1;</p><p><b>  end</

30、b></p><p><b>  end</b></p><p><b>  endmodule</b></p><p><b> ?、?,仿真結(jié)果:</b></p><p>  圖8 12進(jìn)制計(jì)數(shù)器仿真截圖</p><p>  由仿真截圖可以看出

31、在CP的上升沿來臨時輸出Q的值加1,計(jì)數(shù)到12時為</p><p>  01,繼續(xù)計(jì)數(shù),完成了12進(jìn)制計(jì)數(shù)器的功能。仿真結(jié)果與實(shí)驗(yàn)的預(yù)期結(jié)果吻合,</p><p>  說明此模塊是成功的。</p><p><b>  Ⅲ,模塊符號圖:</b></p><p> ?、?4進(jìn)制計(jì)數(shù)器的設(shè)計(jì)及仿真</p><

32、;p>  Ⅰ,Verilog代碼:</p><p>  //counter24.v 24進(jìn)制計(jì)數(shù)器</p><p>  module counter24(CntH,CntL,nCR,EN,CP);</p><p>  input CP,nCR,EN; //時鐘CP、清零nCR、使能EN</p><p>  output[3:0] C

33、ntH,CntL; //高4位和低4為輸出</p><p>  reg[3:0] CntH,CntL;</p><p>  always@(posedge CP or negedge nCR)</p><p><b>  begin</b></p><p>  if(~nCR) {CntH,CntL}<=8'

34、;h00;//異步清零</p><p>  else if(~EN) {CntH,CntL}<={CntH,CntL};</p><p>  else if((CntH>2)||(CntL>9)||((CntH==2)&&(CntL>=3)))</p><p>  {CntH,CntL}<=8'h00; //非法

35、計(jì)數(shù)情況均置數(shù)為00</p><p>  else if((CntH==2)&&CntL<3) //20,21,22,23的計(jì)數(shù)</p><p><b>  begin </b></p><p>  CntH<=CntH;</p><p>  CntL<=CntL+1'b1;&

36、lt;/p><p><b>  end</b></p><p>  else if(CntL==9)//低位為9時,高位加1,低位置4'b0000 </p><p><b>  begin</b></p><p>  CntH<=CntH+1'b1;</p

37、><p>  CntL<=4'b0000;</p><p><b>  end</b></p><p><b>  else</b></p><p><b>  begin</b></p><p>  CntH<=CntH; //其它情況

38、低位正常計(jì)數(shù)</p><p>  CntL<=CntL+1'b1;</p><p><b>  end</b></p><p><b>  end</b></p><p><b>  endmodule</b></p><p><b&

39、gt;  Ⅱ,仿真結(jié)果:</b></p><p>  圖9 24進(jìn)制計(jì)數(shù)器仿真截圖</p><p>  由仿真截圖可以看出在CP的上升沿來臨時輸出Q的值加1,計(jì)數(shù)到23時為</p><p>  00,繼續(xù)計(jì)數(shù),完成了24進(jìn)制計(jì)數(shù)器的功能。仿真結(jié)果與實(shí)驗(yàn)的預(yù)期結(jié)果吻合,</p><p>  說明此模塊是成功的。</p>

40、<p><b>  Ⅲ,模塊符號圖:</b></p><p> ?、叻诸l模塊的設(shè)計(jì)與仿真</p><p> ?、?,Verilog代碼:</p><p>  //Divided_Frequency.v 分頻模塊產(chǎn)成1Hz與512Hz的脈沖</p><p>  module Divided_Frequency

41、 (_1HzOut,_512HzOut,nCR,_1024HzIN);</p><p>  input _1024HzIN,nCR;</p><p>  output _1HzOut,_512HzOut; //輸出1Hz與512Hz</p><p>  supply1 Vdd;</p><p>  wire[11:0] Q;</p&g

42、t;<p>  wire EN1,EN2;</p><p>  counter10 DU0(Q[3:0],nCR,Vdd,_1024HzIN);</p><p>  counter10 DU1(Q[7:4],nCR,EN1,_1024HzIN);</p><p>  counter10 DU2(Q[11:8],nCR,EN2,_1024HzIN);//

43、3次調(diào)用10進(jìn)制</p><p>  assign EN1=(Q[3:0]==4'h9);</p><p>  assign EN2=(Q[7:4]==4'h9)&&(Q[3:0]==4'h9);</p><p>  assign _1HzOut=Q[11];//最高位為1.024Hz</p><p>

44、  assign _512HzOut=Q[0];//最低位為512Hz</p><p><b>  endmodule</b></p><p><b>  Ⅱ,仿真結(jié)果:</b></p><p>  圖10 分頻模塊1Hz輸出(最下的)仿真截圖</p><p>  圖11 分頻模塊512Hz輸出

45、(倒數(shù)第二的)仿真截圖</p><p>  由上圖可以看出512Hz的輸出脈沖符合要求,周期是1024Hz的兩倍,1Hz的脈沖輸出由于是1024Hz的1000倍,在仿真圖上無法準(zhǔn)確驗(yàn)證,只能猜想大概是對的,者還需將程序下載到開發(fā)板上來驗(yàn)證,而且由于我在開始的設(shè)計(jì)師想調(diào)用更多的模塊,所以1Hz脈沖的產(chǎn)生有些誤差。其它的從仿真來看與設(shè)計(jì)相吻合。</p><p><b> ?、螅K符

46、號圖:</b></p><p> ?、?選1選擇器的設(shè)計(jì)與仿真</p><p>  Ⅰ,Verilog代碼:</p><p>  //_2to1MUX.v 2選1選擇器</p><p>  module _2to1MUX (OUT,SEL,X,Y);</p><p>  input[7:0] X,Y; /

47、/兩輸入變量</p><p>  input SEL;</p><p>  output[7:0] OUT;</p><p>  assign OUT=SEL?X:Y;</p><p><b>  endmodule</b></p><p><b> ?、颍抡娼Y(jié)果:</b>

48、</p><p>  圖12 2選1選擇器仿真截圖</p><p>  由上圖可以清晰地看出,當(dāng)SEL為高電平時輸出OUT為X的值,當(dāng)SEL為低電平時輸出OUT 為Y的值,仿真結(jié)果與設(shè)計(jì)預(yù)期結(jié)果相吻合,說明此模塊的設(shè)計(jì)是成功的。</p><p><b> ?、?,模塊符號圖:</b></p><p> ?、?比特比較器的

49、設(shè)計(jì)與仿真</p><p> ?、?,Verilog代碼:</p><p>  //_4bitcomparator.v 4比特比較器</p><p>  module _4bitcomparator (EQU,AMORPM,AMORPMCLOCK,A,B);</p><p>  input[3:0]A,B;</p><p

50、>  input AMORPM,AMORPMCLOCK;//顯示的上下午與鬧鐘設(shè)置的上下午</p><p>  output EQU;</p><p>  assign EQU=((A==B)&&(AMORPM==AMORPMCLOCK));</p><p><b>  endmodule</b></p>&

51、lt;p><b> ?、?,仿真結(jié)果:</b></p><p>  圖13 4比特比較器仿真截圖</p><p>  有上面的仿真圖可以看出當(dāng)A=B且AMORPM=AMORPMCLOCK是,輸出EQU會有一個高電平輸出,當(dāng)兩者有一個不滿足條件時,EQU為低電平時。此模塊用于下面的鬧鐘模塊,當(dāng)設(shè)置的時間與當(dāng)前時間相等時,EQU會有一個高電平輸出。仿真結(jié)果與設(shè)計(jì)相吻

52、合,說明此模塊是成功的。</p><p><b> ?、螅K符號圖:</b></p><p>  ⑩仿電臺報(bào)時模塊的設(shè)計(jì)與仿真</p><p> ?、?,Verilog代碼:</p><p>  // Radio.v 仿電臺報(bào)時</p><p>  module Radio (ALARM_Rad

53、io,Minute,Second,_1024HzIN,_512Hz);</p><p>  input _1024HzIN,_512Hz;</p><p>  input[7:0] Minute,Second;</p><p>  output ALARM_Radio;</p><p>  reg ALARM_Radio;</p>

54、<p>  always@(Minute or Second)</p><p>  if(Minute==8'h59)</p><p>  case(Second)</p><p><b>  8'h51,</b></p><p><b>  8'h53,</b>

55、;</p><p><b>  8'h55,</b></p><p>  8'h57: ALARM_Radio=_512Hz;//在每個小時的59分51,53,55, 57秒的//時候發(fā)出4聲512Hz的低/音</p><p>  8'h59: ALARM_Radio=_1024HzIN;//在每個小時的59分59秒時發(fā)

56、1024Hz</p><p><b>  //的一聲高音</b></p><p>  default: ALARM_Radio=1'b0;//其它情況在此模塊下不發(fā)出聲音</p><p><b>  endcase</b></p><p>  else ALARM_Radio=1'b

57、0; //其它情況在此模塊下不發(fā)出聲音</p><p><b>  endmodule</b></p><p><b> ?、颍抡娼Y(jié)果:</b></p><p>  圖14 仿電臺報(bào)時仿真截圖</p><p>  有上面的仿真可以清楚地看出,在某小時的59分51,53,55,57秒的時候,ALA

58、RM_Radio發(fā)出了四聲512Hz的低音,在59分59秒的時候發(fā)出了一聲1024Hz的高音,仿真結(jié)果與設(shè)計(jì)預(yù)期相符,說明此模塊是成功的。</p><p><b> ?、?,模塊符號圖:</b></p><p>  鬧鐘模塊的設(shè)計(jì)與仿真</p><p>  鬧鐘設(shè)模塊設(shè)計(jì)框圖如下:</p><p>  圖15 鬧鐘設(shè)定模

59、塊框圖</p><p>  由以上框圖很容易用Verilog語言實(shí)現(xiàn)鬧鐘功能。</p><p> ?、?,Verilog代碼:</p><p><b>  //Bell.v </b></p><p>  module Bell (ALARM_Clock,Set_Hr,Set_Min,Hour,Minute,Second,S

60、etHrkey,</p><p>  SetMinkey,AMORPM,AMORPMCLOCK,_1024HzIN,_512Hz,_1Hz,CtrlBell);</p><p>  output ALARM_Clock;</p><p>  output[7:0] Set_Hr,Set_Min;//設(shè)定的鬧鐘的小時與分鐘</p><p>  

61、wire ALARM_Clock;</p><p>  wire[7:0] Set_Hr,Set_Min;</p><p>  input _1024HzIN,_512Hz,_1Hz;</p><p>  input SetHrkey,SetMinkey;//設(shè)定鬧鐘的小時與分鐘的按鍵</p><p>  input CtrlBell; //

62、鬧鈴控制,CtrlBel=1時,鬧鐘在設(shè)定的時刻發(fā)出鬧鈴</p><p>  input AMORPM;//主時鐘的上下午標(biāo)志</p><p>  wire AMORPM;</p><p>  input AMORPMCLOCK;//鬧鐘的上下午標(biāo)志</p><p>  wire AMORPMCLOCK;</p><p&g

63、t;  input[7:0] Hour,Minute,Second; //主時鐘的小時,分鐘,秒</p><p>  supply1 Vdd;</p><p>  wire HrH_EQU,HrL_EQU,MinH_EQU,MinL_EQU;</p><p>  wire Time_EQU;</p><p>  counter60 SU1(S

64、et_Min,Vdd,SetMinkey,_1Hz); </p><p>  counter12 SU2(Set_Hr[7:4],Set_Hr[3:0],Vdd,SetHrkey,_1Hz);</p><p>  //鬧鐘小時與分鐘的設(shè)定</p><p>  _4bitcomparator SU4(HrH_EQU,AMORPM,AMORPMCLOCK,Set_Hr[

65、7:4],Hour[7:4]); </p><p>  //比較主時鐘與鬧鐘的小時高4位是否相等</p><p>  _4bitcomparator SU5(HrL_EQU,AMORPM,AMORPMCLOCK,Set_Hr[3:0],Hour[3:0]);</p><p>  //比較主時鐘與鬧鐘的小時低4位是否相等</p><p>  _

66、4bitcomparator SU6(MinH_EQU,AMORPM,AMORPMCLOCK,Set_Min[7:4],Minute[7:4]);</p><p>  //比較主時鐘與鬧鐘的分鐘高4位是否相等</p><p>  _4bitcomparator SU7(MinL_EQU,AMORPM,AMORPMCLOCK,Set_Min[3:0],Minute[3:0]);</p&

67、gt;<p>  //比較主時鐘與鬧鐘的分鐘低4位是否相等</p><p>  assign Time_EQU=(HrH_EQU && HrL_EQU && MinH_EQU && MinL_EQU);</p><p><b>  //時間相等</b></p><p>  assig

68、n ALARM_Clock=CtrlBell?(Time_EQU && (((Second[0]==1'b1)&&_512Hz)||((</p><p>  Second[0]==1'b0)&&_1024HzIN))): 1'b0;</p><p>  //若兩時間相等則發(fā)出高低音交錯的鬧鈴1024HzIN和512Hz

69、</p><p><b>  Endmodule</b></p><p><b>  Ⅱ,仿真結(jié)果:</b></p><p>  圖16 鬧鐘模塊仿真截圖</p><p>  由以上的仿真截圖可以清晰地看出當(dāng)主時鐘與鬧鐘設(shè)定的時間相等時,ALARM_Clock會輸出1024HzIN和512Hz高低

70、交錯的脈沖,且會持續(xù)1分鐘,這與設(shè)計(jì)預(yù)期相符,說明此模塊是成功的。</p><p><b>  Ⅲ,模塊符號圖:</b></p><p>  自動整點(diǎn)報(bào)時模塊的設(shè)計(jì)與仿真</p><p>  此模塊的設(shè)計(jì)思想為利用case語句將所有小時都包含進(jìn)去,并且在相應(yīng)小時的case通過賦值語句將相應(yīng)應(yīng)該響的聲數(shù)定義好,從而實(shí)現(xiàn)了幾點(diǎn)報(bào)幾時的功能,考慮到要

71、與整點(diǎn)報(bào)時的聲音區(qū)分開來故選擇了在偶數(shù)秒響。具體如下:</p><p> ?、?,Verilog代碼:</p><p>  //Complete_auto.v</p><p>  module Complete_auto (ALARM_Complete_auto,Hour,Minute,Second,_512Hz);</p><p>  inp

72、ut[7:0] Hour,Minute,Second;</p><p>  input _512Hz;</p><p>  output ALARM_Complete_auto;</p><p>  reg ALARM_Complete_auto;</p><p>  always@(Minute or Second)</p>

73、<p>  if(Minute==8'h00)</p><p>  case(Hour)</p><p>  8'h01:ALARM_Complete_auto=(Second==8'h02)&&_512Hz;</p><p><b>  //1點(diǎn)是響1下</b></p><

74、p>  8'h02:ALARM_Complete_auto=(Second==8'h02||Second==8'h04)&&_512Hz;</p><p><b>  //2點(diǎn)是響2下</b></p><p>  8'h03:ALARM_Complete_auto=(Second==8'h02||Secon

75、d==8'h04||Second==8'h 06)&&_512Hz;</p><p><b>  //3點(diǎn)是響3下</b></p><p>  8'h04:ALARM_Complete_auto=(Second==8'h02||Second==8'h04||Second==8'h 06||Second==

76、8'h08)&&_512Hz;</p><p><b>  //4點(diǎn)是響4下</b></p><p>  8'h05:ALARM_Complete_auto=(Second==8'h02||Second==8'h04||Second==8'h 06||Second==8'h08||Second==8

77、9;h10)&&_512Hz;</p><p><b>  //5點(diǎn)是響5下</b></p><p>  8'h06:ALARM_Complete_auto=(Second==8'h02||Second==8'h04||Second==8'h 06||Second==8'h08||Second==8'h1

78、0 ||Second==8'h12)&&_512Hz;</p><p><b>  //6點(diǎn)是響6下</b></p><p>  8'h07:ALARM_Complete_auto=(Second==8'h02||Second==8'h04||Second==8'h 06||Second==8'h08||

79、Second==8'h10||Second==8'h12||Second==8'h14)&&_512Hz;</p><p><b>  //7點(diǎn)是響7下</b></p><p>  8'h08:ALARM_Complete_auto=(Second==8'h02||Second==8'h04||Secon

80、d==8'h 06||Second==8'h08||Second==8'h10||Second==8'h12||Second==8'h14||Second==8'h16)&&_512Hz;</p><p><b>  //8點(diǎn)是8下</b></p><p>  8'h09:ALARM_Comple

81、te_auto=(Second==8'h02||Second==8'h04||Second==8'h 06||Second==8'h08||Second==8'h10||Second==8'h12||Second==8'h14||Second==8'h16||Second==8'h18)&&_512Hz;</p><p>&l

82、t;b>  //9點(diǎn)是響9下</b></p><p>  8'h10:ALARM_Complete_auto=(Second==8'h02||Second==8'h04||Second==8'h 06||Second==8'h08||Second==8'h10||Second==8'h12||Second==8'h14||Secon

83、d==8'h16||Second==8'h18 ||Second==8'h20)&&_512Hz;</p><p>  //10點(diǎn)是響10下</p><p>  8'h11:ALARM_Complete_auto=(Second==8'h02||Second==8'h04||Second==8'h 06||Second

84、==8'h08||Second==8'h10||Second==8'h12||Second==8'h14||Second==8'h16||Second==8'h18||Second==8'h20||Second==8'h22)&&_512Hz;</p><p>  //11點(diǎn)是響11下</p><p>  8&

85、#39;h12:ALARM_Complete_auto=(Second==8'h02||Second==8'h04||Second==8'h 06||Second==8'h08||Second==8'h10||Second==8'h12||Second==8'h14||Second==8'h16||Second==8'h18||Second==8'h20||

86、Second==8'h22||Second==8'h24)&&_512Hz;</p><p>  //12點(diǎn)是響12下</p><p><b>  endcase</b></p><p>  else ALARM_Complete_auto=1'b0;</p><p><b&

87、gt;  endmodule</b></p><p><b> ?、颍抡娼Y(jié)果:</b></p><p>  圖17 自動整點(diǎn)報(bào)時仿真(7點(diǎn)時)截圖</p><p>  圖18 自動整點(diǎn)報(bào)時仿真(11點(diǎn)時)截圖</p><p>  由以上仿真的截圖可以看出,隨便選取兩個整點(diǎn)時刻7點(diǎn)和11點(diǎn)ALARM_Co

88、mplete_auto都輸出了相應(yīng)的脈沖,7點(diǎn)時每隔一秒就會有512Hz的脈沖輸出,相當(dāng)于是響了7下,11點(diǎn)時也如此,有兩仿真圖可以看出仿真結(jié)果與實(shí)驗(yàn)預(yù)期相符得很好,說明該模塊是成功的。</p><p><b> ?、螅K符號圖:</b></p><p>  觸摸報(bào)時模塊設(shè)計(jì)(未成功故不能仿真)</p><p>  對于此模塊,我設(shè)想的思路與

89、自動整點(diǎn)報(bào)時相似,在按鍵按下時,啟動另一個時鐘,而此時鐘的秒是以0開始計(jì)數(shù)的,故可調(diào)用自動整點(diǎn)報(bào)時來完成功能。</p><p>  在此就不把代碼附上去了。</p><p><b>  模塊符號圖:</b></p><p><b>  主時鐘模塊的設(shè)計(jì)</b></p><p>  主時鐘模塊主要完成

90、小時、分鐘和秒的計(jì)時,調(diào)節(jié)分鐘與小時,12和24進(jìn)制時間的切換等功能。Verilog代碼如下:</p><p>  //top_clock.v</p><p>  module top_clock(Hour,Minute,Second,_1Hz,nCR,AdjMinkey,AdjHrkey,_12OR24);</p><p>  input _1Hz,nCR,Ad

91、jMinkey,AdjHrkey,_12OR24;</p><p>  output[7:0] Hour,Minute,Second;</p><p>  wire[7:0] Hour,Minute,Second;</p><p>  wire[7:0] Hour_12,Hour_24;</p><p>  supply1 Vdd;</

92、p><p>  wire MinCP,HrCP;</p><p>  counter60 UT1(Second,nCR,Vdd,_1Hz);</p><p>  counter60 UT2(Minute,nCR,Vdd,~MinCP);</p><p>  counter12 UT3(Hour_12[7:4],Hour_12[3:0],nCR,V

93、dd,~HrCP);</p><p>  counter24 UT4(Hour_24[7:4],Hour_24[3:0],nCR,Vdd,~HrCP); //完成12進(jìn)制和24</p><p><b>  //進(jìn)制的計(jì)數(shù)</b></p><p>  _2to1MUX MU0(Hour,_12OR24,Hour_24,Hour_12);//選擇顯

94、示的進(jìn)制小時</p><p>  assign MinCP=AdjMinkey?_1Hz:(Second==8'h59);</p><p>  assign HrCP=AdjHrkey?_1Hz:({Minute,Second}==16'h5959);</p><p><b>  endmodule</b></p>

95、<p><b>  模塊符號圖:</b></p><p>  完整模塊(頂層模塊)的設(shè)計(jì)</p><p>  //Complete_top_Clock.v </p><p>  module Complete_top_Clock(LED_Hr,LED_Min,LED_Sec,ALARM,AMORPM,AMORPMCLOCK,_102

96、4HzIN,</p><p>  AdjHrkey,AdjMinkey, ALARM_Ctrl_Byhand,_12OR24,CtrlBell,Mode,nCR);</p><p>  input _1024HzIN;</p><p>  input nCR;</p><p>  output[7:0] LED_Hr,LED_Min,LED_

97、Sec;</p><p>  output AMORPM;</p><p>  output AMORPMCLOCK;</p><p>  wire[7:0] LED_Hr,LED_Min,LED_Sec;</p><p>  wire _512Hz,_1Hz;</p><p>  wire _nCR;</p&g

98、t;<p>  input AdjMinkey,AdjHrkey,_12OR24,ALARM_Ctrl_Byhand;</p><p>  //input SetHrkey,SetMinkey;</p><p>  wire[7:0] Hour,Minute,Second;</p><p>  wire[7:0] Set_Hr,Set_Min;<

99、/p><p>  wire[7:0] Minute_Byhand,Second_Byhand;</p><p>  supply0 _0;</p><p>  supply1 _1;</p><p>  wire[7:0] Hour_temp,Minute_temp,Second_temp;</p><p>  wire

100、ALARM_Radio;</p><p>  wire ALARM_Clock;</p><p>  wire ALARM_Complete_auto,ALARM_Complete_Byhand;</p><p>  output ALARM;</p><p>  input CtrlBell;</p><p>  i

101、nput Mode;</p><p>  assign AMORPM=(Hour==8'h12)?(~AMORPM):AMORPM;</p><p>  assign AMORPMCLOCK=(Set_Hr==8'h12)?(~AMORPMCLOCK):AMORPMCLOCK;</p><p>  Divided_Frequency U0(_1Hz,

102、_512Hz,nCR,_1024HzIN);</p><p>  //調(diào)用分頻模塊產(chǎn)生1Hz和512Hz的脈沖</p><p>  top_clock U1(Hour,Minute,Second,_1Hz,nCR,((~Mode)&&AdjMinkey),((~Mode)&&AdjHrkey),_12OR24);</p><p>&l

103、t;b>  //調(diào)用主時鐘模塊</b></p><p>  Radio U2(ALARM_Radio,Minute,Second,_1024HzIN,_512Hz);</p><p><b>  //調(diào)用仿電臺報(bào)時</b></p><p>  Bell U3(ALARM_Clock,Set_Hr,Set_Min,Hour,Mi

104、nute,Second,(Mode&&AdjHrkey),(Mode&&AdjMinkey),</p><p>  AMORPM,AMORPMCLOCK,_1024HzIN,_512Hz,_1Hz,CtrlBell);</p><p><b>  //調(diào)用鬧鐘模塊</b></p><p>  Complete_a

105、uto U4(ALARM_Complete_auto,Hour,Minute,Second,_512Hz);</p><p>  //調(diào)用自動整點(diǎn)報(bào)時模塊</p><p>  //Complete_Byhand U5(_1Hz,ALARM_Ctrl_Byhand,Minute_Byhand,_nCR);</p><p>  //Complete_Byhand U5

106、(Hour,Second,_512Hz,ALARM_Ctrl_Byhand,ALARM_Complete_Byhand);</p><p>  //Complete_Byhand U5 (Hour,_512Hz,ALARM_Ctrl_Byhand,ALARM_Complete_Byhand);</p><p>  assign ALARM=(ALARM_Radio||ALARM_Clock

107、||ALARM_Complete_auto);</p><p><b>  //最終蜂鳴器輸出</b></p><p>  _2to1MUX MU0(LED_Hr,Mode,Set_Hr,Hour);</p><p>  _2to1MUX MU1(LED_Min,Mode,Set_Min,Minute);</p><p>

108、;  _2to1MUX MU2(LED_Sec,Mode,8'h00,Second);//選擇顯示主時鐘還是設(shè)定的鬧鐘時間</p><p><b>  Endmodule</b></p><p><b>  模塊符號圖:</b></p><p><b>  引腳分配</b></p>

109、<p><b>  【汽車尾燈】</b></p><p>  汽車尾燈實(shí)際上是一個簡單的狀態(tài)機(jī),利用狀態(tài)機(jī)的方法設(shè)計(jì)如下:</p><p>  Ⅰ,Verilog代碼:</p><p>  // car_light.v 汽車尾燈模塊</p><p>  module car_light(CP,brake,

110、right,left,back,l1,l2,l3,l4,l5,l6,sta);</p><p>  input CP,brake,right,left,back;</p><p>  output l1,l2,l3,l4,l5,l6;</p><p>  output [3:0]sta;</p><p>  reg l1,l2,l3,l4,l

111、5,l6;</p><p>  reg [3:0] sta,c;</p><p><b>  reg ba;</b></p><p>  always@(posedge CP)</p><p><b>  begin</b></p><p>  if (brake)</

112、p><p><b>  begin</b></p><p>  if (right) //右轉(zhuǎn)彎剎車</p><p><b>  begin</b></p><p>  l1<=1; l2<=1; l3<=1;</p><p>  if(c==4'h0)

113、 begin l4<=1; l5<=0; l6<=0; c<=c+4'h1; end </p><p>  if(c==4'h1) begin l4<=0; l5<=1; l6<=0; c<=c+4'h1; end</p><p>  if(c>=4'h2) begin l4<=0; l5<=

114、0; l6<=1; c<=4'h0; end</p><p>  sta<=4'h5;</p><p><b>  end</b></p><p>  else if (left) //左轉(zhuǎn)彎剎車</p><p><b>  begin</b></p>

115、<p>  l4<=1; l5<=1; l6<=1;</p><p>  if(c==4'h0) begin l1<=0; l2<=0; l3<=1; c<=c+4'h1; end </p><p>  if(c==4'h1) begin l1<=0; l2<=1; l3<=0; c<=c

116、+4'h1; end</p><p>  if(c>=4'h2) begin l1<=1; l2<=0; l3<=0; c<=4'h0; end</p><p>  sta<=4'h6;</p><p><b>  end</b></p><p>  e

117、lse //剎車</p><p><b>  begin</b></p><p>  l1<=1; l2<=1; l3<=1; l4<=1; l5<=1; l6<=1;</p><p>  sta<=4'h2;</p><p><b>  end</b&

118、gt;</p><p><b>  end</b></p><p><b>  else </b></p><p><b>  begin </b></p><p>  if (right) //右轉(zhuǎn)彎</p><p><b>  begin&

119、lt;/b></p><p>  l1<=0; l2<=0; l3<=0;</p><p>  if(c==4'h0) begin l4<=1; l5<=0; l6<=0; c<=c+4'h1; end </p><p>  if(c==4'h1) begin l4<=0; l5<=

120、1; l6<=0; c<=c+4'h1; end</p><p>  if(c>=4'h2) begin l4<=0; l5<=0; l6<=1; c<=4'h0; end</p><p>  sta<=4'h3;</p><p><b>  end</b><

121、/p><p>  else if (left) //左轉(zhuǎn)彎</p><p><b>  begin</b></p><p>  l4<=0; l5<=0; l6<=0;</p><p>  if(c==4'h0) begin l1<=0; l2<=0; l3<=1; c<=

122、c+4'h1; end </p><p>  if(c==4'h1) begin l1<=0; l2<=1; l3<=0; c<=c+4'h1; end</p><p>  if(c>=4'h2) begin l1<=1; l2<=0; l3<=0; c<=4'h0; end</p>

123、<p>  sta<=4'h4;</p><p><b>  end</b></p><p>  else if (back) //倒車</p><p><b>  begin</b></p><p><b>  ba<=~ba;</b><

124、/p><p>  sta<=4'h7;</p><p>  if (ba) begin l1<=1; l2<=1; l3<=1; l4<=1; l5<=1; l6<=1; end</p><p>  else begin l1<=0; l2<=0; l3<=0; l4<=0; l5<=0;

125、l6<=0; end</p><p><b>  end</b></p><p><b>  else</b></p><p>  begin //正常</p><p>  sta<=4'h1; l1<=0; l2<=0; l3<=0; l4<=0; l

126、5<=0; l6<=0;</p><p><b>  end</b></p><p><b>  end</b></p><p><b>  end</b></p><p><b>  endmodule</b></p><

127、p><b>  Ⅱ,仿真結(jié)果:</b></p><p>  圖19 汽車尾燈仿真截圖</p><p>  由以上的仿真截圖可以清楚地看出,①為右轉(zhuǎn)彎剎車,②為左轉(zhuǎn)彎剎車,③為剎車,④為右轉(zhuǎn)彎,⑤為左轉(zhuǎn)彎,⑥倒車。在各種情況下,仿真結(jié)果與實(shí)驗(yàn)結(jié)果均相符,說明模塊是成功的。</p><p><b>  Ⅲ,模塊符號圖:</b

128、></p><p><b> ?、?,引腳分配</b></p><p><b>  【實(shí)驗(yàn)總結(jié)與心得】</b></p><p>  通過本次試驗(yàn)讓我了解和掌握了VerilogHDL硬件語言,并且實(shí)地操作應(yīng)用在FPGA上,讓我獲益匪淺。在實(shí)際操作編程的過程中,我發(fā)現(xiàn)很多東西都得學(xué)會轉(zhuǎn)換,不能死搬硬套的去使用任何一門語言或

溫馨提示

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

評論

0/150

提交評論