日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

quartus频率计 时钟设置_Verilog频率计设计

發(fā)布時(shí)間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 quartus频率计 时钟设置_Verilog频率计设计 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是以前的一個(gè)可編程邏輯課上機(jī)實(shí)驗(yàn)三

實(shí)驗(yàn)報(bào)告

數(shù)字頻率計(jì)的基本設(shè)計(jì)思路是在給定一個(gè)time開(kāi)始測(cè)量的時(shí)候產(chǎn)生的T的個(gè)數(shù),也就是采用一個(gè)標(biāo)準(zhǔn)的基準(zhǔn)時(shí)鐘,在單位時(shí)間(1秒)里對(duì)被測(cè)信號(hào)的脈沖數(shù)進(jìn)行計(jì)數(shù)。測(cè)頻法包括直接測(cè)頻法、等精度頻率測(cè)量法、周期法等。

數(shù)字頻率計(jì)的原理如圖6-1所示。對(duì)系統(tǒng)時(shí)鐘的信號(hào)分頻后產(chǎn)生1Hz的輸出頻率被作為控制模塊的時(shí)鐘輸入,由控制模塊產(chǎn)生的計(jì)數(shù)使能信號(hào)和清零信號(hào)對(duì)計(jì)數(shù)模塊進(jìn)行控制,而由其產(chǎn)生的鎖存信號(hào)load對(duì)鎖存模塊進(jìn)行控制,一旦計(jì)數(shù)使能信號(hào)為高電平,并且時(shí)鐘上升沿到來(lái),計(jì)數(shù)器便開(kāi)始正常計(jì)數(shù),清零信號(hào)到來(lái)則計(jì)數(shù)清零,而當(dāng)鎖存信號(hào)為高電平時(shí),數(shù)據(jù)便被鎖存器鎖存,然后將鎖存的數(shù)據(jù)輸出到顯示模塊顯示出來(lái),數(shù)據(jù)鎖存保證系統(tǒng)可以穩(wěn)定顯示數(shù)據(jù),顯示譯碼驅(qū)動(dòng)電路將二進(jìn)制表示的計(jì)數(shù)結(jié)果轉(zhuǎn)換成相應(yīng)的能夠在數(shù)碼顯示管上可以顯示的十進(jìn)制結(jié)果。

(1)分頻器模塊

分頻器模塊將對(duì)系統(tǒng)時(shí)鐘進(jìn)行分頻,輸出1Hz赫茲的信號(hào),作為測(cè)頻控制模塊的輸入信號(hào)。例如,假設(shè)系統(tǒng)時(shí)鐘為1024Hz,則對(duì)其進(jìn)行2的10次方分頻即可得到1Hz的分頻輸出信號(hào)。

(2)測(cè)頻控制模塊

測(cè)頻控制模塊的輸出包括計(jì)數(shù)器的使能端,清零端以及數(shù)據(jù)鎖存器的鎖存信號(hào)。分別控制計(jì)數(shù)器的計(jì)數(shù)和清零。當(dāng)鎖存信號(hào)為高電平時(shí),計(jì)數(shù)器的計(jì)數(shù)結(jié)果被鎖存并輸出到顯示模塊顯示。

1 moduletestctl(clk,tsten,clr,load);2

3 inputclk;4

5 outputtsten,clr,load;6

7 regloadcnt,div2,clr;8

9 always@(posedgeclk)10

11 div2<=~div2;12

13 always@(clk,div2)14

15 begin

16

17 if (clk==0 && div2==0)18

19 clr=1;20

21 else

22

23 clr=0;24

25 end

26

27 assign load=~div2;28

29 assign tsten=div2;30

31 endmodule

View Code

該模塊的仿真結(jié)果可參考圖6-2。

(3)計(jì)數(shù)器模塊

計(jì)數(shù)器是完成計(jì)數(shù)步驟的一個(gè)單元。它也可用與分頻、定時(shí)、產(chǎn)生節(jié)拍脈沖和脈沖序列等。本設(shè)計(jì)中為了可以使計(jì)數(shù)器正常工作,必須只有當(dāng)使能端為1的時(shí)候才開(kāi)始計(jì)數(shù),每個(gè)時(shí)鐘的上升沿到來(lái)時(shí)計(jì)數(shù)器加1,當(dāng)累加到10的時(shí)候就清零,同時(shí)產(chǎn)生進(jìn)位信號(hào),同時(shí)計(jì)數(shù)器也應(yīng)帶有清零信號(hào),一旦清零信號(hào)有效時(shí),計(jì)數(shù)器立即清零。

(4)鎖存器模塊

鎖存,就是把信號(hào)暫存以維持某種電平狀態(tài)。測(cè)量模塊的工作任務(wù)成功后,在load信號(hào)的上升沿到來(lái)時(shí)把測(cè)量值存入reg當(dāng)中,之后發(fā)送到顯示模塊當(dāng)中。鎖存器主要是為了保護(hù)數(shù)據(jù),使其在下次觸發(fā)或者復(fù)位時(shí)仍然有效。

(5)顯示模塊

LED顯示器在許多的數(shù)字系統(tǒng)中作為顯示輸出設(shè)備,使用非常廣泛。它內(nèi)部有七個(gè)發(fā)光的a、b、d、e、f和g二極管。通過(guò)點(diǎn)亮不同的LED字段,可顯示數(shù)字0,1,┅,9和A,b,C,d,E,F等不同的字符及自定義一些段發(fā)光代表簡(jiǎn)單符號(hào)。

(6)頂層模塊

按照?qǐng)D一所示的數(shù)字頻率計(jì)的框圖,調(diào)用各單元模塊,完成數(shù)字頻率計(jì)的頂層設(shè)計(jì),并進(jìn)行仿真,實(shí)現(xiàn)頻率測(cè)量。

練習(xí)

(1)分頻器模塊

1 modulefre_div (clk, clk_out);2 inputclk;3 outputclk_out;4 reg [8:0] counter;5 regclk_out;6 parameter N = 1000; //改變N的值變成任意偶分頻,同時(shí)counter的范圍需要相應(yīng)修改

7

8 always @ (posedgeclk)9 begin

10 if (counter == N/2 - 1) //偶分頻數(shù)一半時(shí)反相

11 begin

12 clk_out <= ~clk_out;13 counter <= 0; //置0,從0計(jì)數(shù)

14 end

15 else

16 counter <= counter + 1;17 end

18 endmodule

(2)測(cè)頻控制模塊

1 moduletestctl (clk_out_ctl, tsten, rst_ctl, load);2 inputclk_out_ctl;3 outputtsten, rst_ctl, load;4 regrst_ctl, div2;5 always @(posedge clk_out_ctl) begin

6 div2 = ~div2;7 end

8 always @(clk_out_ctl or div2) begin

9 if (clk_out_ctl == 0 && div2 == 0) begin

10 rst_ctl = 1;11 end

12 else

13 begin

14 rst_ctl = 0;15 end

16 end

17 assign load = ~div2;18 assign tsten =div2;19 endmodule

(3)計(jì)數(shù)器模塊(改正在注釋里)

1 modulecounter (enable,clk_t,rst_count,dout,cout);2 inputenable,clk_t,rst_count;3 output [15:0] dout;4 outputcout;5 regcout;6 reg [15:0] dout;7 always @(posedge clk_t) begin//有問(wèn)題,always @(posedge clk_t or posedge rst_count)//異步復(fù)位

8 if (!rst_count) begin//if (rst_count) begin dout = 16'd0; cout = 1'b0; end//先寫復(fù)位,首先考慮復(fù)位信號(hào)

9 if (enable) begin//else begin

10 if(dout == 65535) begin //if (enable) begin

11 dout = 16'd0; // if(dout == 65535) begin dout = 16'd0; cout = 1'b1; end

12 cout = 1'b1; // else dout = dout + 16'd1;13 end //end

14 else begin //end

15 dout = dout + 16'd1;

16 end

17 end

18 end

19 else begin

20 dout = 16'd0;

21 cout = 1'b0;

22 end

23 end

24 endmodule

25

26

27

(4)鎖存器模塊

1 modulelatch_out (in_dout, save_dout, load_in);2 inputload_in;3 input [15:0] in_dout;4 output [15:0] save_dout;5 reg [15:0] reg_in;6 wire [15:0] save_dout;7 always@(load_in)8 if(load_in)9 reg_in =in_dout;10 assign save_dout =reg_in;11 endmodule

(5)顯示模塊

【1】二進(jìn)制轉(zhuǎn)BCD碼模塊(參考)

1 modulebin_bcd_cp (bin, wan, qian, bai, shi, ge, bcd);2 input [15:0] bin;3 output [31:0] bcd;4 output reg [3:0] wan;5 output reg [3:0] qian;6 output reg [3:0] bai;7 output reg [3:0] shi;8 output reg [3:0] ge;9 integeri;10 always @(bin) begin

11 wan = 4'd0;

12 qian = 4'd0;

13 bai = 4'd0;

14 shi = 4'd0;

15 ge = 4'd0;

16 for (i = 15; i >= 0; i = i - 1) begin

17 if (wan > 4) wan = wan + 3;18 if (qian > 4) qian = qian + 3;19 if (bai > 4) bai = bai + 3;20 if (shi > 4) shi = shi + 3;21 if (ge > 4) ge = ge + 3;22

23 wan = wan << 1;24 wan[0] = qian[3];25 qian = qian << 1;26 qian[0] = bai[3];27 bai = bai << 1;28 bai[0] = shi[3];29 shi = shi << 1;30 shi[0] = ge[3];31 ge = ge << 1;32 ge[0] =bin[i];33 end

34 end

35 assign bcd = {{12{1'b0}}, wan, qian, bai, shi, ge};

36 endmodule

【2】八段顯示數(shù)碼管

moduleseg7 (data_in, data_out );input [3:0] data_in ;output [7:0] data_out ;reg [7:0] data_out ;always @(data_in) begindata_out= 7'b1111111;

case(data_in )4'b0000: data_out = 8'b1100_0000; //0

4'b0001: data_out = 8'b1111_1001; //1

4'b0010: data_out = 8'b1010_0100; //2

4'b0011: data_out = 8'b1011_0000; //3

4'b0100: data_out = 8'b1001_1001; //4

4'b0101: data_out = 8'b1001_0010; //5

4'b0110: data_out = 8'b1000_0011; //6

4'b0111: data_out = 8'b1111_1000; //7

4'b1000: data_out = 8'b1000_0000; //8

4'b1001: data_out = 8'b1001_1000; //9

4'b1010: data_out = 8'b1000_1000; //A

4'b1011: data_out = 8'b1000_0011; //b

4'b1100: data_out = 8'b1010_0111; //c

4'b1101: data_out = 8'b1010_0001; //d

4'b1110: data_out = 8'b1000_0110; //E

4'b1111: data_out = 8'b1000_1110; //F

default: data_out = 8'b1111_1111;

endcase

end

endmodule

(6)頂層模塊

把各個(gè)模塊生成symbol,通過(guò)創(chuàng)建 block diagram/schematic file 手動(dòng)連線生成。

RTL:

仿真波形:

注:各個(gè)小模塊的仿真測(cè)試都要一個(gè)一個(gè)做(在此我省略了)

如有錯(cuò)誤還請(qǐng)指出,如有侵權(quán)還請(qǐng)告知,如需轉(zhuǎn)載請(qǐng)注明出處!

總結(jié)

以上是生活随笔為你收集整理的quartus频率计 时钟设置_Verilog频率计设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。