數(shù)字頻率計(jì)課程設(shè)計(jì)實(shí)習(xí)報告_第1頁
已閱讀1頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  數(shù)字頻率計(jì)</b></p><p><b>  設(shè)計(jì)報告書</b></p><p><b>  一、設(shè)計(jì)要求</b></p><p>  設(shè)計(jì)一個4位十進(jìn)制數(shù)字式頻率計(jì),最大測量范圍為10MHz。量程分10kHz、100kHz、1MHz和10MHz四檔(最大讀數(shù)分別為9.

2、999kHz、99.99kHz、999.9kHz、9999.kHz).</p><p>  量程自動轉(zhuǎn)換規(guī)則如下:</p><p>  當(dāng)讀數(shù)大于9999時,頻率計(jì)處于超量程狀態(tài),此時顯示器發(fā)出溢出指示,下一次測量時,量程自動增大一檔,小數(shù)點(diǎn)位置隨量程變更自動移位。</p><p>  可用手動方式使量程在每次測量開始時處于最低檔。</p><p

3、><b>  顯示方式如下:</b></p><p>  采用記憶顯示方式,即計(jì)數(shù)過程中不顯示數(shù)據(jù),待計(jì)數(shù)過程結(jié)束以后,顯示計(jì)數(shù)結(jié)果,將此顯示結(jié)果保持到下一次計(jì)數(shù)結(jié)束。顯示時間應(yīng)不小于1s。</p><p>  送入信號應(yīng)是符合CMOS電路要求的脈沖波,對于小信號模擬信號應(yīng)有放大整形電路。</p><p><b>  二、方案設(shè)

4、計(jì)</b></p><p><b>  <1>整體思路</b></p><p>  所謂頻率就是周期性信號在單位時間 (1s)內(nèi)變化的次數(shù)。若在一定時間間隔 T內(nèi)測得周期性信號的重復(fù)變化次數(shù)為 N ,則頻率可表示為 f =N /T (Hz)。被測信號fx經(jīng)放大整形電路變成計(jì)數(shù)電路所要求的脈沖信號,其頻率與被測信號fx的頻率相同?;鶞?zhǔn)電路提供標(biāo)準(zhǔn)

5、時間基準(zhǔn)信號clk,其高電平持續(xù)時間 t 1 = 1 s,當(dāng) 1 s信號來到時 ,閘門電路開通 ,被測脈沖信號通過閘門電路,成為計(jì)數(shù)電路的計(jì)數(shù)脈沖 CP,計(jì)數(shù)電路開始計(jì)數(shù),直到 ls信號結(jié)束時閘門電路關(guān)閉 ,停止計(jì)數(shù)。若在閘門時間 1 s內(nèi)計(jì)數(shù)電路計(jì)得的脈沖個數(shù)為 N ,則被測信號頻率 f =NHz。控制電路的作用有兩個:一是產(chǎn)生鎖存脈沖 CLK,使顯示電路上的數(shù)字穩(wěn)定;二是產(chǎn)生清“0”脈沖,使計(jì)數(shù)電路每次測量從零開始計(jì)數(shù)。</p

6、><p>  <2>時鐘信號的選擇</p><p>  設(shè)計(jì)電路中時鐘信號采用12M有源晶振產(chǎn)生,下面是12M有源晶振引腳圖:</p><p>  <3>整形電路的選擇</p><p>  整形電路中可以用運(yùn)算放大器LM311組成電壓選擇器實(shí)現(xiàn),以下是關(guān)于此芯片的資料:</p><p><b&

7、gt;  引腳功能:</b></p><p>  GROUND/GND 接地 INPUT +    正向輸入端 INPUT -    反向輸入端 OUTPUT     輸出端 BALANCE   

8、; 平衡 BALANCE/STROBE 平衡/選通 V+   電源正 V-   電源負(fù)</p><p><b>  NC   空腳</b></p><p><b>  LM311引腳圖</b></p><p>  由于LM311過于復(fù)雜

9、且此次設(shè)計(jì)要求精度不高,整形電路可以改為如下電路:</p><p>  這樣產(chǎn)生穩(wěn)定3.3V為幅值的信號送入EPM570中,對芯片起到保護(hù)作用。</p><p>  <3>設(shè)計(jì)所用核心芯片資料及其原理</p><p>  所用核心芯片為CPLD器件EPM570T100C5?;驹O(shè)計(jì)方法是借助集成開發(fā)軟件平臺quartus II 6.0,用原理圖、硬件描述

10、語言(Verilog HDL)等方法,生成相應(yīng)的目標(biāo)文件,通過下載電纜(“在系統(tǒng)”編程)將代碼傳送到目標(biāo)芯片中,實(shí)現(xiàn)設(shè)計(jì)的數(shù)字系統(tǒng)。</p><p>  EPM570引腳圖:</p><p>  在Quartus II 6.0中設(shè)定的引腳分布如下:</p><p>  <4>計(jì)數(shù)譯碼原理圖:</p><p>  <5>

11、分頻選擇器原理圖:</p><p>  <6>數(shù)碼管引腳圖:</p><p>  通過Verilog HDL語言設(shè)計(jì)程序,實(shí)現(xiàn)上述原理圖功能,最終所測信號頻率以四位共陰極數(shù)碼管顯示,單位為KHz。</p><p><b>  三、調(diào)試</b></p><p>  按照分頻計(jì)、計(jì)數(shù)器、鎖存器、選擇器、譯碼器模塊

12、分別進(jìn)行編程調(diào)試、仿真;</p><p>  建立工程,把五個模塊連接,調(diào)試。針對錯誤模塊進(jìn)行修改,重新建立工程、連接模塊;</p><p>  將程序下載到EMP570中,利用數(shù)電實(shí)驗(yàn)板以及數(shù)碼管進(jìn)行調(diào)試;</p><p>  將各種器件焊接到萬用板上,連接電源進(jìn)行實(shí)際調(diào)試。</p><p><b>  程序代碼</b>

13、;</p><p>  1.module ssss(b,base);</p><p><b>  input b;</b></p><p>  output reg base;</p><p>  reg [23:0]q;</p><p>  always@(posedge b)</p>

14、;<p>  if(q<5999999)</p><p><b>  q<=q+1;</b></p><p><b>  else </b></p><p><b>  begin</b></p><p>  base<=!base;q<=

15、0;</p><p><b>  end</b></p><p><b>  Endmodule</b></p><p><b>  2</b></p><p>  module Fen6M(b,base);</p><p><b>  inp

16、ut b;</b></p><p>  output reg base;</p><p>  reg [23:0]q;</p><p>  always@(posedge b)</p><p>  if(q<5999999)</p><p><b>  q<=q+1;</b>

17、;</p><p><b>  else </b></p><p><b>  begin</b></p><p>  base<=!base;q<=0;</p><p><b>  end</b></p><p><b>  En

18、dmodule</b></p><p><b>  3.</b></p><p>  module ctrl(clk,Counter_EN,Latch_EN,Counter_Clr);</p><p>  input clk;</p><p>  output Counter_EN,Latch_EN,Coun

19、ter_Clr;</p><p>  reg wire_1=0,wire_2=0;</p><p>  always @(posedge clk)</p><p><b>  begin</b></p><p>  wire_1 <= ! wire_1;</p><p><b> 

20、 end</b></p><p>  always @(negedge clk)</p><p><b>  begin</b></p><p>  wire_2 <= wire_1;</p><p><b>  end</b></p><p>  assi

21、gn Counter_EN = wire_1;</p><p>  assign Latch_EN = (! Counter_EN) & wire_2;</p><p>  assign Counter_Clr = (! Counter_EN) & (! Latch_EN) & (! wire_2);</p><p><b>

22、;  endmodule</b></p><p><b>  4.</b></p><p>  module counter(clk,clr,en,q,ql);</p><p>  input clk,en,clr;</p><p>  output reg[3:0] q;</p><p&

23、gt;  output ql;</p><p>  assign ql=en&(q==9);</p><p>  always@(posedge clk,posedge clr)</p><p>  if(clr) q<=0;</p><p><b>  else </b></p><

24、p><b>  if(en)</b></p><p><b>  begin</b></p><p>  if(q<9) q<=q+1;</p><p>  else q<=0;</p><p><b>  end</b></p><

25、p><b>  endmodule</b></p><p><b>  5.</b></p><p>  module latcher(d1,d2,en,clk,q1,q2);</p><p>  input [3:0] d1,d2;</p><p>  input clk,en;</p

26、><p>  output reg[3:0] q1,q2;</p><p>  always@(posedge clk)</p><p><b>  if(~en)</b></p><p><b>  begin</b></p><p><b>  q1<=d1;

27、</b></p><p><b>  q2<=d2;</b></p><p><b>  end</b></p><p><b>  endmodule</b></p><p><b>  6.</b></p><p&

28、gt;  module over_select(IN,SELECT,OUT);</p><p>  input [3:0] IN;</p><p>  input SELECT;</p><p>  output reg[3:0] OUT;</p><p>  always @(SELECT)</p><p>  ca

29、se(SELECT)</p><p>  0:OUT<=IN;</p><p>  1:OUT<=10;</p><p><b>  endcase</b></p><p><b>  endmodule</b></p><p><b>  7.<

30、/b></p><p>  module decode4to7(incode,outcode);</p><p>  input [3:0] incode;</p><p>  output [6:0] outcode;</p><p>  reg[6:0] outcode;</p><p>  always@(

31、incode)</p><p><b>  begin</b></p><p>  case(incode)</p><p>  4'b0000: outcode= 7'b1111110;</p><p>  4'b0001: outcode= 7'b0110000;</p>

32、<p>  4'b0010: outcode= 7'b1101101; </p><p>  4'b0011: outcode= 7'b1111001; </p><p>  4'b0100: outcode= 7'b0110011; </p><p>  4'b0101: outcode= 7&

33、#39;b1011011; </p><p>  4'b0110: outcode= 7'b1011111; </p><p>  4'b0111: outcode= 7'b1110000; </p><p>  4'b1000: outcode= 7'b1111111; </p><p>

34、  4'b1001: outcode= 7'b1110011;</p><p>  default: outcode= 7'b1000111;</p><p><b>  endcase</b></p><p><b>  end</b></p><p><b> 

35、 Endmodule</b></p><p><b>  8.</b></p><p>  module Half_freq(CLK_in,CLK_out);</p><p>  input CLK_in;</p><p>  output CLK_out;</p><p>  reg

36、 CLK_out;</p><p>  always@(posedge CLK_in)</p><p><b>  begin</b></p><p>  CLK_out=~CLK_out; </p><p><b>  end</b></p><p><b>

37、  Endmodule</b></p><p><b>  9.</b></p><p>  module fenpin(clk,fout10,fout100,fout1000);</p><p>  input clk;</p><p>  output fout10,fout100,fout1000;&

38、lt;/p><p>  reg[3:0] q1,q2,q3;</p><p>  assign fout10=(q1==9);</p><p>  assign fout100=fout10&(q2==9);</p><p>  assign fout1000=fout100&(q3==9);</p><p&g

39、t;  always@(posedge clk)</p><p>  if(q1<9) q1<=q1+1;</p><p>  else q1<=0;</p><p>  always@(negedge fout10)</p><p>  if(q2<9) q2<=q2+1;</p><p&

40、gt;  else q2<=0;</p><p>  always@(negedge fout100)</p><p>  if(q3<9) q3<=q3+1;</p><p>  else q3<=0;</p><p><b>  Endmodule</b></p><p&

41、gt;<b>  10.</b></p><p>  module decode2to4(incode,outcode);</p><p>  input[1:0] incode;</p><p>  output reg[3:0] outcode;</p><p>  integer i;</p>&l

42、t;p>  always @(incode)</p><p><b>  begin</b></p><p>  case(incode) </p><p>  2'b00:outcode=4'b1000;</p><p>  2'b01:outcode=4'b0100; </

43、p><p>  2'b10:outcode=4'b0010;</p><p>  2'b11:outcode=4'b0001;</p><p><b>  endcase</b></p><p><b>  end</b></p><p><

44、b>  endmodule</b></p><p><b>  11.</b></p><p>  module decode4to7(incode,outcode,in);</p><p>  input [3:0] incode;</p><p><b>  input in;</b

45、></p><p>  output [7:0] outcode;</p><p>  reg[7:0] outcode;</p><p>  always@(incode)</p><p><b>  begin</b></p><p>  case(incode)</p>

46、<p>  4'b0000: outcode[6:0]= 7'b1111110;</p><p>  4'b0001: outcode[6:0]= 7'b0110000;</p><p>  4'b0010: outcode[6:0]= 7'b1101101; </p><p>  4'b0011:

47、outcode[6:0]= 7'b1111001; </p><p>  4'b0100: outcode[6:0]= 7'b0110011; </p><p>  4'b0101: outcode[6:0]= 7'b1011011; </p><p>  4'b0110: outcode[6:0]= 7'

48、b1011111; </p><p>  4'b0111: outcode[6:0]= 7'b1110000; </p><p>  4'b1000: outcode[6:0]= 7'b1111111; </p><p>  4'b1001: outcode[6:0]= 7'b1110011;</p>

49、<p>  default: outcode[6:0]= 7'b1000111;</p><p><b>  endcase</b></p><p>  if(in==1) outcode[7]=1'b1;</p><p>  else outcode[7]=1'b0;</p><p>

50、<b>  end</b></p><p><b>  endmodule</b></p><p><b>  12. </b></p><p>  module mux4_1(a,b,c,d,s,out);</p><p>  input a,b,c,d;</p>

51、<p>  input [1:0] s;</p><p>  output reg out;</p><p>  always @(s)</p><p><b>  case(s)</b></p><p>  2'b00:out=a;</p><p>  2'b01:

52、out=b;</p><p>  2'b10:out=c;</p><p>  2'b11:out=d;</p><p><b>  endcase</b></p><p><b>  endmodule</b></p><p><b>  13.&

53、lt;/b></p><p>  module renge_counter(clk,clr,q,ql);</p><p>  input clk,clr;</p><p>  output reg [2:0] q;</p><p>  output ql;</p><p>  assign ql=(q==4);&

54、lt;/p><p>  always @(posedge clk ,posedge clr)</p><p><b>  if(clr)</b></p><p><b>  q<=0;</b></p><p>  else if(q<4)</p><p><b&

55、gt;  q<=q+1;</b></p><p>  else q<=0;</p><p><b>  endmodule</b></p><p><b>  總體電路圖</b></p><p>  四、測試數(shù)據(jù)與實(shí)驗(yàn)結(jié)果</p><p><b&

56、gt;  五、心得體會</b></p><p>  我們小組的實(shí)習(xí)題目是數(shù)字式頻率計(jì)。該項(xiàng)目主要是通過verilog語言編程后進(jìn)行焊接完成。我們在十七十八號兩天對verilogHDL語言設(shè)計(jì)進(jìn)行了學(xué)習(xí)與鞏固,從十九號正式開始數(shù)字式頻率計(jì)的設(shè)計(jì),二十一號編程驗(yàn)收通過,開始處理外部信號的測試,即穩(wěn)壓工作。之后進(jìn)行PCB圖的制作。從二十四號開始焊接電路板,于二十七號完成所有工作。</p>&l

57、t;p>  在剛開始編程的時候,對于verilogHDL語言這種新知識要花一段時間來消化,所以在編寫頻率計(jì)的代碼時遇到很多問題,但是經(jīng)過我們查找資料和激烈的討論后終于解決了問題。通過自我學(xué)習(xí)以及其他方式我們了解到了計(jì)數(shù)器分頻器譯碼器等模塊的編譯方式,學(xué)到了很多Verilog的有用的知識點(diǎn)。從二十四號開始的焊接由于之前電子工藝實(shí)習(xí)時焊接過幾百個點(diǎn),所以最后的焊接工作還比較順利。同時經(jīng)過這幾天的焊接,在某種程度上又鍛煉了我們的動手能力

溫馨提示

  • 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

提交評論