国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FPGA_分頻(信號(hào)使能分頻與計(jì)數(shù)器分頻)(奇偶分頻)

這篇具有很好參考價(jià)值的文章主要介紹了FPGA_分頻(信號(hào)使能分頻與計(jì)數(shù)器分頻)(奇偶分頻)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

時(shí)鐘對(duì)于 FPGA 是非常重要的,但板載晶振提供的時(shí)鐘信號(hào)頻率是固定的,不一定滿
足工程需求,所以分頻和倍頻還是很有必要的。

一、計(jì)數(shù)器分頻

這里通過計(jì)數(shù)的方式來實(shí)現(xiàn)分頻。

1.通過計(jì)數(shù)器來實(shí)現(xiàn)6分頻。兩種方式。第一種直接通過計(jì)數(shù)方式直接獲取獲取。輸入信號(hào)sys_clk和sys_rst_n,輸出分頻的信號(hào)clk_out,還有一個(gè)變量計(jì)數(shù)器cnt。

計(jì)數(shù)器分頻如何實(shí)現(xiàn)分頻,fpga開發(fā)

?cnt:計(jì)數(shù)器說明,要進(jìn)行6分頻,原始信號(hào)6個(gè)周期變一個(gè)周期輸出,輸出6分頻周期的半個(gè)周期占三個(gè)原始時(shí)鐘周期,對(duì)原始時(shí)鐘計(jì)數(shù)3(0 1 2)

module      divider_six
(
        input wire      sys_rst,
        input wire      sys_clk,
        
        output reg      clk_out
);
reg     [2:0]   cnt;
always@(posedge sys_clk or negedge sys_rst)
    if(sys_rst == 1'b0)
    cnt <= 2'd0;
    else    if(cnt == 2'd2)
    cnt <= 2'd0;
    else
    cnt <= cnt+2'd1;
always@(posedge sys_clk or negedge sys_rst)
    if(sys_rst == 1'b0)
    clk_out <= 1'b0;
    else    if(cnt == 2'd2)
    clk_out <= ~clk_out;
    else
    clk_out <= clk_out;

endmodule

    

testbench

`timescale 1ns/1ns
module  tb_divider_six();
        reg       sys_rst;
        reg       sys_clk;
        
        wire       clk_out;
initial
    begin
    sys_clk = 1'b1;
    sys_rst = 1'b0;
    #20
    sys_rst = 1'b1;
    end
always #10 sys_clk = ~sys_clk;


 divider_six  divider_six_inst
(
        .sys_rst(sys_rst),
        .sys_clk(sys_clk),
          
        .clk_out(clk_out)
);
endmodule

計(jì)數(shù)器分頻如何實(shí)現(xiàn)分頻,fpga開發(fā)

?此時(shí)輸出時(shí)鐘就是clk_out ,如果直接用clk_out當(dāng)作系統(tǒng)工作時(shí)鐘

//直接使用clk_out作為工作時(shí)鐘
always@(posedge clk_out or negedge sys_rst_n)
	if(sys_rst_n == 1'b0)
		a <= 0;
	else
		a <= a + 1;

二、 通過計(jì)數(shù)器控制標(biāo)志信號(hào),通過標(biāo)志信號(hào)當(dāng)作系統(tǒng)工作時(shí)鐘

計(jì)數(shù)器分頻如何實(shí)現(xiàn)分頻,fpga開發(fā)

module      divider_six
(
        input wire      sys_rst,
        input wire      sys_clk,
        
        output reg      clk_flag
);
reg     [2:0]   cnt;

always@(posedge sys_clk or negedge sys_rst)
    if(sys_rst == 1'b0)
		cnt <= 2'd0;
    else    if(cnt == 3'd5)
		cnt <= 3'd0;
    else
		cnt <= cnt+3'd1;
		
always@(posedge sys_clk or negedge sys_rst)
    if(sys_rst == 1'b0)
		clk_flag <=1'b0;
    else    if(cnt == 3'd4)
		clk_flag <=1'b1;
    else
		clk_flag <=1'b0; 
endmodule

    

此時(shí)產(chǎn)生使能信號(hào)flag(實(shí)際還是周期變化的信號(hào)理解為時(shí)鐘,但是不當(dāng)作時(shí)鐘信號(hào)使用,當(dāng)作使能信號(hào)觸發(fā),但是組合邏輯還是用系統(tǒng)源時(shí)鐘)。

//工作時(shí)鐘還是系統(tǒng)時(shí)鐘 
always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n == 1'b0)
		a <= 1'd0;
	else	if(clk_flag == 1'b1)
		a <= a + 1'b1;

總結(jié):兩種方式的區(qū)別

這里為什么要說明這兩種方式呢?
這里就要說到FPGA中的全局時(shí)鐘網(wǎng)絡(luò),因?yàn)樵?FPGA 中凡是時(shí)鐘信號(hào)都要連接到全局時(shí)鐘網(wǎng)絡(luò)上,全局時(shí)鐘網(wǎng)絡(luò)也稱為全局時(shí)鐘樹,是 FPGA 廠商專為時(shí)鐘路徑而特殊設(shè)計(jì)的,它能夠使時(shí)鐘信號(hào)到達(dá)每個(gè)寄存器的時(shí)間都盡可能相同,以保證更低的時(shí)鐘偏斜(Skew)和抖動(dòng)(Jitter)。然而我們采用第一種方式產(chǎn)生的時(shí)鐘clk_out信號(hào)并沒有連接到全局時(shí)鐘網(wǎng)絡(luò)上,這種做法所衍生的潛在問題在低速系統(tǒng)中不易察覺,而在高速系統(tǒng)中就很容易出現(xiàn)問題,但 sys_clk 則是由外部晶振直接通過管腳連接到了 FPGA 的專用時(shí)鐘管腳上,自然就會(huì)連接到全局時(shí)鐘網(wǎng)絡(luò)上,所以在 sys_clk 時(shí)鐘工作下的信號(hào)要比在 clk_out 時(shí)鐘工作下的信號(hào)更容易在高速系統(tǒng)中保持穩(wěn)定。所以第二種方式相對(duì)來說更加安全。

上述已經(jīng)說到6分頻,屬于偶數(shù)分頻。下面就來介紹奇數(shù)分頻。奇數(shù)分頻采用上述第二種方式來實(shí)現(xiàn)的話,思路和步驟都差不多。我這里介紹一下奇數(shù)分頻采用上述的第一種方式。那么問題又來了,既然上述第一種方式?jīng)]有第二種好,為什么還有講的,哈哈,是的。我記錄他并不是因?yàn)樗暮?,而是因?yàn)檫@里奇數(shù)分頻時(shí)的思路和邏輯思維。這里實(shí)現(xiàn)一個(gè)5分頻
計(jì)數(shù)器分頻如何實(shí)現(xiàn)分頻,fpga開發(fā)

首先是輸入時(shí)鐘和復(fù)位,一個(gè)計(jì)數(shù)器,兩個(gè)變量分頻時(shí)鐘,一個(gè)輸出時(shí)鐘。要實(shí)現(xiàn)N奇數(shù)分頻,計(jì)數(shù)器計(jì)數(shù)到N-1,這里5分頻最大計(jì)數(shù)到4。然后變量clk1初始狀態(tài)為高電平,系統(tǒng)時(shí)鐘上升沿到來時(shí)有效,這里計(jì)數(shù)到2時(shí)拉低,其實(shí)這里可以計(jì)數(shù)到0,1,2,3都是可以的。clk2初始狀態(tài)也是高電平,系統(tǒng)時(shí)鐘下降沿到來時(shí)有效。這里計(jì)數(shù)到與clk1計(jì)數(shù)最大值一致就行,然后clk1與clk2做與運(yùn)算就可以得到輸出5分頻時(shí)鐘clk_out。

兩個(gè)四分頻,計(jì)數(shù)值范圍不一樣,造成相位偏移半個(gè)周期,兩個(gè)四分頻信號(hào)相與,輸出5分頻時(shí)鐘信號(hào),(最好該信號(hào)依然當(dāng)作flag使能信號(hào)使用,在時(shí)序邏輯輸入時(shí)鐘還是使用原始時(shí)鐘)
?

module	divider_five
(	
	
	input	wire			sys_clk		,
	input	wire			sys_rst_n	,
	
	output	wire			clk_out
);

reg	[2:0]	cnt;
reg			clk1;
reg			clk2;


always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n == 1'b0)
		cnt <= 3'd0;
	else	if(cnt == 3'd4)
		cnt <= 3'd0;
	else
		cnt <= cnt + 1'b1;

always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n == 1'b0)
		clk1 <= 1'b1;
	else	if(cnt == 3'd2)
		clk1 <= 1'b0;
	else	if(cnt == 3'd4)
		clk1 <= 1'b1;
	else
		clk1 <= clk1;
		

always@(negedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n == 1'b0)
		clk2 <= 1'b1;
	else	if(cnt == 3'd2)
		clk2 <= 1'b0;
	else	if(cnt == 3'd4)
		clk2 <= 1'b1;
	else
		clk2 <= clk2;


assign  clk_out = clk1 & clk2;

endmodule

?testbench

`timescale 1ns/1ns 
module	tb_divider_five();

reg			sys_clk;
reg			sys_rst_n;

wire		clk_out;

initial
	begin
		sys_clk = 1'b1;
		sys_rst_n <= 1'b0;
		#30
		sys_rst_n <= 1'b1;
	end
	
always	#10 sys_clk = ~sys_clk;

divider_five	divider_five_inst
(	
	
	.sys_clk		(sys_clk),
	.sys_rst_n		(sys_rst_n),

	.clk_out        (clk_out)
);
endmodule

仿真

計(jì)數(shù)器分頻如何實(shí)現(xiàn)分頻,fpga開發(fā)

分頻系數(shù):50MHz晶振輸入

? ? ? ? 輸出1KHz時(shí)鐘頻率,50_000_000/1000=50_000

? ? ? ? 輸出100KHz時(shí)鐘頻率,50_000_000/100_000=500

來源:有所更改,加入自己理解(175條消息) FPGA——分頻器_fpga分頻器_rοckman的博客-CSDN博客?????https://blog.csdn.net/a17377547725/article/details/125927896文章來源地址http://www.zghlxwxcb.cn/news/detail-775239.html

到了這里,關(guān)于FPGA_分頻(信號(hào)使能分頻與計(jì)數(shù)器分頻)(奇偶分頻)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 奇偶校驗(yàn)器設(shè)計(jì)(奇偶校驗(yàn)與奇偶檢測(cè),XOR法和計(jì)數(shù)器法|verilog代碼|Testbench|仿真結(jié)果)

    奇偶校驗(yàn)器設(shè)計(jì)(奇偶校驗(yàn)與奇偶檢測(cè),XOR法和計(jì)數(shù)器法|verilog代碼|Testbench|仿真結(jié)果)

    數(shù)字IC經(jīng)典電路設(shè)計(jì) 經(jīng)典電路設(shè)計(jì)是數(shù)字IC設(shè)計(jì)里基礎(chǔ)中的基礎(chǔ),蓋大房子的第一部是打造結(jié)實(shí)可靠的地基,每一篇筆者都會(huì)分門別類給出設(shè)計(jì)原理、設(shè)計(jì)方法、verilog代碼、Testbench、仿真波形。然而實(shí)際的數(shù)字IC設(shè)計(jì)過程中考慮的問題遠(yuǎn)多于此,通過本系列希望大家對(duì)數(shù)字I

    2024年02月11日
    瀏覽(26)
  • 【FPGA】Verilog:計(jì)數(shù)器 | 異步計(jì)數(shù)器 | 同步計(jì)數(shù)器 | 2位二進(jìn)制計(jì)數(shù)器的實(shí)現(xiàn) | 4位十進(jìn)制計(jì)數(shù)器的實(shí)現(xiàn)

    【FPGA】Verilog:計(jì)數(shù)器 | 異步計(jì)數(shù)器 | 同步計(jì)數(shù)器 | 2位二進(jìn)制計(jì)數(shù)器的實(shí)現(xiàn) | 4位十進(jìn)制計(jì)數(shù)器的實(shí)現(xiàn)

    目錄 Ⅰ. 實(shí)踐說明 0x00 計(jì)數(shù)器(Counter) 0x01 異步計(jì)數(shù)器(Asynchronous Counter)

    2024年02月05日
    瀏覽(34)
  • 【FPGA】Verilog:升降計(jì)數(shù)器 | 波紋計(jì)數(shù)器 | 約翰遜計(jì)數(shù)器 | 實(shí)現(xiàn) 4-bit 升降計(jì)數(shù)器的 UP/DOWN

    【FPGA】Verilog:升降計(jì)數(shù)器 | 波紋計(jì)數(shù)器 | 約翰遜計(jì)數(shù)器 | 實(shí)現(xiàn) 4-bit 升降計(jì)數(shù)器的 UP/DOWN

    目錄 Ⅰ. 理論部分 0x00?升降計(jì)數(shù)器(UP DOWN Counter) 0x01?波紋計(jì)數(shù)器(Ripple Counter)

    2024年02月05日
    瀏覽(35)
  • FPGA拾憶_(3):調(diào)用IP 計(jì)數(shù)器&BCD計(jì)數(shù)器

    FPGA拾憶_(3):調(diào)用IP 計(jì)數(shù)器&BCD計(jì)數(shù)器

    調(diào)用IP計(jì)數(shù)器: 每來一個(gè)cin(進(jìn)位輸入)信號(hào),計(jì)數(shù)器輸出值加一,當(dāng)計(jì)數(shù)值為9且cin為1時(shí),輸出一個(gè)時(shí)鐘長(zhǎng)度的cout(進(jìn)位輸出)信號(hào)。 首先采用調(diào)用quartus種IP的方式,具體步驟: Tools----IP Catalog: 然后會(huì)調(diào)出IP目錄窗口: 通過搜索counter來添加計(jì)數(shù)器模塊,需要設(shè)置的內(nèi)容

    2024年02月03日
    瀏覽(27)
  • FPGA-計(jì)數(shù)器的實(shí)現(xiàn)

    FPGA-計(jì)數(shù)器的實(shí)現(xiàn)

    計(jì)數(shù)器是依托時(shí)鐘實(shí)現(xiàn)的,在時(shí)鐘沿(一般在上升沿)進(jìn)行檢測(cè),實(shí)現(xiàn)計(jì)數(shù)加1; 計(jì)數(shù)是從0開始計(jì)數(shù)的,所以計(jì)數(shù)值為(M-1),其中M為計(jì)數(shù)的值。比如計(jì)數(shù)到10,我們實(shí)現(xiàn)時(shí)到9即可; 這里為計(jì)數(shù)器的第一種實(shí)現(xiàn)方法,該方法非最優(yōu)方法,我們只需要了解即可,后續(xù)我們會(huì)介

    2024年02月04日
    瀏覽(20)
  • 計(jì)數(shù)器簡(jiǎn)介以及FPGA實(shí)現(xiàn)

    計(jì)數(shù)器簡(jiǎn)介以及FPGA實(shí)現(xiàn)

    在時(shí)序邏輯電路中,最基本的單元是寄存器,本篇將會(huì)介紹如何利用寄存器,實(shí)現(xiàn)一個(gè)具有計(jì)數(shù)器功能的電路。在FPGA開發(fā)中,一切與時(shí)間有關(guān)的設(shè)計(jì)都會(huì)用到計(jì)數(shù)器,所以學(xué)會(huì)設(shè)計(jì)計(jì)數(shù)器至關(guān)重要。 計(jì)數(shù)是一種最簡(jiǎn)單基本的運(yùn)算,計(jì)數(shù)器就是實(shí)現(xiàn)這種運(yùn)算的邏輯電路,計(jì)數(shù)

    2024年02月05日
    瀏覽(18)
  • fpga[1]計(jì)數(shù)器(附源碼)

    fpga[1]計(jì)數(shù)器(附源碼)

    計(jì)數(shù)器電路是在數(shù)字電子技術(shù)中應(yīng)用的最多的時(shí)序邏輯電路。計(jì)數(shù)器不僅能用于對(duì)時(shí)鐘脈沖計(jì)數(shù),還可以用于分頻、定時(shí)、產(chǎn)生節(jié)拍脈沖和脈沖序列以及進(jìn)行數(shù)字運(yùn)算等。 在許多大型電路中必然有計(jì)數(shù)器電路的身影,可以說了解并掌握計(jì)數(shù)器的設(shè)計(jì)方法是學(xué)習(xí)fpga的第一步。

    2023年04月25日
    瀏覽(24)
  • FPGA實(shí)驗(yàn)二:??勺冇?jì)數(shù)器設(shè)計(jì)

    目錄 一、實(shí)驗(yàn)?zāi)康?二、實(shí)驗(yàn)要求 三、實(shí)驗(yàn)代碼 1.實(shí)驗(yàn)源碼

    2024年02月12日
    瀏覽(39)
  • FPGA Vivado環(huán)境下實(shí)現(xiàn)計(jì)數(shù)器

    FPGA Vivado環(huán)境下實(shí)現(xiàn)計(jì)數(shù)器

    本文實(shí)現(xiàn)的是一個(gè)簡(jiǎn)單的計(jì)數(shù)器,模塊中包含時(shí)鐘信號(hào)和復(fù)位信號(hào),計(jì)數(shù)使用的是一個(gè)四位的輸出,復(fù)位鍵有效時(shí),計(jì)數(shù)器置零,當(dāng)時(shí)鐘信號(hào)上升沿時(shí),計(jì)數(shù)加一,實(shí)現(xiàn)計(jì)數(shù)。(僅供參考) 建立工程counter,并新建一個(gè)設(shè)計(jì)文件命名為:counter ? ? 3.打開counter文件,進(jìn)行計(jì)數(shù)器

    2024年01月21日
    瀏覽(56)
  • fpga[1.1]BCD計(jì)數(shù)器(附源碼)

    fpga[1.1]BCD計(jì)數(shù)器(附源碼)

    BCD碼也稱二進(jìn)碼十進(jìn)數(shù),可以分為有權(quán)碼和無權(quán)碼兩個(gè)種類。常見的有權(quán)BCD碼有8421碼、2421碼、5421碼,無權(quán)BCD碼有余3碼、余3循環(huán)碼、格雷碼。 其中,8421BCD碼是最基本和最常用的BCD碼。其各個(gè)bit位的權(quán)值分別為8d、4d、2d、1d(5421碼、2421碼同理)。 BCD碼常用于數(shù)碼管這類經(jīng)常用

    2023年04月09日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包