日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通過(guò)Verilog實(shí)現(xiàn)對(duì)一個(gè)頻率的任意占空比的任意分頻

ZYNQ ? 來(lái)源:ZYNQ ? 2023-01-05 09:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

verilog程序設(shè)計(jì)中,我們往往要對(duì)一個(gè)頻率進(jìn)行任意分頻,而且占空比也有一定的要求這樣的話,對(duì)于程序有一定的要求,現(xiàn)在我在前人經(jīng)驗(yàn)的基礎(chǔ)上做一個(gè)簡(jiǎn)單的總結(jié),實(shí)現(xiàn)對(duì)一個(gè)頻率的任意占空比的任意分頻。

比如:我們FPGA系統(tǒng)時(shí)鐘是50M Hz,而我們要產(chǎn)生的頻率是880Hz,那么,我們需要對(duì)系統(tǒng)時(shí)鐘進(jìn)行分頻。我們很容易想到用計(jì)數(shù)的方式來(lái)分頻:

50000000/880 = 56818

這個(gè)數(shù)字不是2的整冪次方,那么怎么辦呢?我們可以設(shè)定一個(gè)參數(shù),讓它到56818的時(shí)候重新計(jì)數(shù)不就完了嗎?呵呵,程序如下:

module div(clk, clk_div);

input clk;

output clk_div;

reg [15:0] counter;

always @(posedge clk)

if(counter==56817) counter <= 0;

else counter <= counter+1;

assign clk_div = counter[15];

endmodule

下面我們來(lái)算一下它的占空比:我們清楚地知道,這個(gè)輸出波形在counter為0到32767的時(shí)候?yàn)榈?,?2767到56817的時(shí)候?yàn)楦?,占空比?0%多一些,如果我們需要占空比為50%,那么怎么辦呢?不用急,慢慢來(lái)。

我們?cè)僭O(shè)定一個(gè)參數(shù),使它為56817的一半,使達(dá)到它的時(shí)候波形翻轉(zhuǎn),那不就完了嗎?呵呵,再看看:

module div(clk, clk_div);
input clk;
output clk_div;
reg [14:0] counter;
always @(posedge clk)
if(counter==28408) counter <= 0;
else counter <= counter+1;
reg clk_div;
always @(posedge clk)
  if(counter==28408) clk_div <= ~clk_div;
endmodule

占空比是不是神奇地變成50%了呢?呵呵。

繼續(xù)讓我們來(lái)看如何實(shí)現(xiàn)任意占空比,比如還是由50 M分頻產(chǎn)生880 Hz,而分頻得到的信號(hào)的占空比為30%。

56818×30%=17045

module div(clk,reset,clk_div,counter);
input clk,reset;
output clk_div;
output [15:0] counter;
reg [15:0] counter;
reg clk_div;
always @(posedge clk)
if(!reset) counter <= 0;
else if(counter==56817) counter <= 0;
else counter <= counter+1;
always @(posedge clk)
if(!reset) clk_div <= 0;
else if(counter<17045) clk_div <= 1;
else clk_div <= 0;
endmodule

三分頻的Verilog實(shí)現(xiàn)

//很實(shí)用也是筆試面試時(shí)常考的,已經(jīng)經(jīng)過(guò)仿真

占空比要求50%和不要求占空比差別會(huì)很大,先看一個(gè)占空比50%的描述

module div3(CLKIN,CLKOUT,RESETn);
input CLKIN,RESETn;
output CLKOUT;
 
//internal counter signals
reg[1:0] count_a;
reg[1:0] count_b;
reg      CLKOUT;
 
always @(negedge RESETn or posedge CLKIN)
begin
    if (RESETn==1'b0)
        count_a<=2'b00;
    else
        if (count_a==2'b10)
            count_a<=2'b00;
        else
            count_a<=count_a+1;
end
 
always @(negedge RESETn or negedge CLKIN)
begin
    if (RESETn==1'b0)
        count_b<=2'b0;
    else
        if (count_b==2'b10)
            count_b<=2'b00;
        else
            count_b<=count_b+1;
end
 
always @(count_a or count_b or RESETn)
begin
 if (RESETn==1'b0)
   CLKOUT=1'b0;
 else if((count_a+count_b==4)||(count_a+ count_b==1))
   CLKOUT=~CLKOUT;
end
endmodule


0 1 2 0 1 2
/ / / /
0 1 2 0 1 2

下面是一個(gè)非50%的描述,只用了上升沿

module div3(CLKIN,CLKOUT,RESETn);
input CLKIN,RESETn;
output CLKOUT;
 
 
wire d;
reg     q1,q2;
wire         CLKOUT;
 
always @(negedge RESETn or posedge CLKIN)
begin
    if (RESETn==1'b0)
        q1<=1'b0;
    else
        q1<=d;
end
 
always @(negedge RESETn or posedge CLKIN)
begin
    if (RESETn==1'b0)
        q2<=1'b0;
    else
        q2<=q1;
end
assign d=~q1 & ~q2;
assign CLKOUT=q2;
endmodule

占空比不是50%,只用了單沿觸發(fā)器,寄存器輸出。

至于其他奇數(shù)要求50%的或者不要求的占空比的,都可以參照上面兩個(gè)例子做出。
占空比為50%的一個(gè)更好的實(shí)現(xiàn)。

module div3(CLKIN,CLKOUT,RESETn);
input CLKIN,RESETn;
output CLKOUT;
//internal counter signals
reg[1:0] count_a;
reg            b,c;
//reg        CLKOUT;
wire CLKOUT;
always @(negedge RESETn or posedge CLKIN)
begin
    if (RESETn==1'b0)
        count_a<=2'b00;
    else
        if (count_a==2'b10)
            count_a<=2'b00;
        else
            count_a<=count_a+1;
end
always @(negedge RESETn or negedge CLKIN)
begin
    if (RESETn==1'b0)
        b<=1'b0;
    else
        if (count_a==2'b01)
            b<=2'b0;
        else
            b<=1'b1;
end
always @(negedge RESETn or posedge CLKIN)
begin
    if (RESETn==1'b0)
        c<=1'b0;
    else
        if (count_a==2'b10)
            c<=1'b1;
        else if (count_a==2'b01)
            c<=1'b0;
end
assign          CLKOUT=b & c;
endmodule

時(shí)鐘選擇器的Verilog寫(xiě)法!

CPRI有3種數(shù)據(jù)時(shí)鐘,61.44M 122.88M 245.76M,需要模塊能夠根據(jù)外部的速率指示信號(hào)(一個(gè)2位的輸入信號(hào),由模塊外部給定)選擇其中的一種時(shí)鐘作為模塊的工作時(shí)鐘

但由于所選用的FPGA工作頻率關(guān)系,不能超過(guò)400M,無(wú)法通過(guò)寄存器方式實(shí)現(xiàn)時(shí)鐘源的選擇.

使用雙邊觸發(fā)的方式將最高的頻率進(jìn)行分頻,代碼如下,已經(jīng)通過(guò)ModelSim的仿真,可以實(shí)現(xiàn)。

module clk_div(
                  reset,        //復(fù)位信號(hào)
                  data_rate,    //數(shù)據(jù)速率指示
                  clk2,         //245.76M的時(shí)鐘輸入
                  time1,        //分頻計(jì)數(shù)器
                  clk           //選擇后的時(shí)鐘輸出
                  );
input       reset;
input [1:0] data_rate;
input       clk2;
output [1:0] time1;
output      clk;
reg [1:0] time1;
reg       clk;                  
                  
always@(clk2 or reset)
if(reset)
   begin
     time1=2'b00;
     clk=1'b0;
   end
else
   begin
     time1=time1+1'b1;
     case(data_rate)
       2'b00:if(time1==2'b00)
                clk=~clk;
             else
                clk=clk;  
       2'b01:if(time1[0]==1'b1)
                clk=~clk;
             else
                clk=clk;
       2'b10:clk=clk;
       2'b11:clk=~clk;
     endcase
   end
endmodule      

verilog 實(shí)現(xiàn)gray碼計(jì)數(shù)器

//16位gray碼計(jì)數(shù)器,gary碼狀態(tài)改變時(shí)候每次只改變一個(gè)bit
//,可以有效防止競(jìng)爭(zhēng)和毛刺的產(chǎn)生。
module gray_counter(clk,clr,start,stop,q,cout);
 input clk;
 input clr;
 input start,stop;
 output reg [3:0] q;
 output reg cout;
 reg flag=1;
 reg [3:0] s,next_s;
 
 //parameter S0=0, S1=1, S2=2, S3=3, S4=4, S5=5, S6=6, S7=7;
 //parameter S8=8, S9=9, S10=10, S11=11, S12=12, S13=13, S14=14, S15=15;
 parameter s0=0000, s1=0001, s2=0011, s3=0010;
 parameter s4=0110, s5=0111, s6=0101, s7=0100;
 parameter s8=1100, s9=1101, s10=1111,s11=1110;
 parameter s12=1010, s13=1011, s14=1001, s15=1000;
 always @(posedge clk)
 begin
  if (clr) s <= s0;
  else   s <= next_s;
 end 
 /*always @(posedge start or posedge stop)
 begin
  if(start) flag=1;
  else if (stop) flag=0;
 end*/
 always @(s or flag)     /*該進(jìn)程實(shí)現(xiàn)狀態(tài)的轉(zhuǎn)換*/
 begin    
  case (s)
   s0: begin
   if (flag)  next_s <=s1;
   // else       next_s <=s0;
    end
   s1: begin
   if (flag)    next_s <= s2;
   end
   s2: begin
   if (flag)   next_s <=s3;
   ////else        next_s <=s0;
   end
   s3: begin
   if (flag)    next_s <=s4;
   //else        next_s <=s3;
   end
   s4: begin
   if (flag)     next_s <= s5;
   end
   s5: begin
   if (flag)   next_s <=s6;
   //else        next_s <=s0;
   end
   s6: begin
   if (flag)   next_s <=s7;
   //else        next_s <=s3;
   end
   s7: begin
   if (flag)  next_s <=s8;
   //else       next_s <=s0;
   end
   s8: begin
   if (flag)    next_s <= s9;
   end
   s9: begin
   if (flag)   next_s <=s10;
   ////else        next_s <=s0;
   end
   s10: begin
   if (flag)    next_s <=s11;
   //else        next_s <=s3;
   end
   s11: begin
   if (flag)     next_s <= s12;
   end
   s12: begin
   if (flag)   next_s <=s13;
   //else        next_s <=s0;
   end
   s13: begin
   if (flag)   next_s <=s14;
   //else        next_s <=s3;
   end
   s14: begin
   if (flag)   next_s <=s15;
   ////else        next_s <=s0;
   end
   s15: begin
   if (flag)    next_s <=s0;
   //else        next_s <=s3;
   end
   default:    next_s <=s0;   /*default語(yǔ)句*/
  endcase
 end
 always @(s)          /*該進(jìn)程定義組合邏輯(FSM的輸出)*/  
 begin
  case(s)
  s0: q=0;
  s1: q=4;
  s2: q=2;
  s3: q=3;
  s4: q=4;
  s5: q=5;
  s6: q=6;
  s7: q=7;
  s8: q=8;
  s9: q=9;
  s10: q=10;
  s11: q=11;
  s12: q=12;
  s13: q=13;
  s14: q=14;
  s15: q=15;    
  default:q=0;     /*default語(yǔ)句,避免鎖存器的產(chǎn)生*/
  endcase
 end
 always @(s)
    begin
   if (s==s15) cout=1;//assign cout=q;
   else cout=0;
 end
endmodule

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1664

    文章

    22508

    瀏覽量

    639495
  • Verilog
    +關(guān)注

    關(guān)注

    31

    文章

    1374

    瀏覽量

    114732

原文標(biāo)題:Verilog_實(shí)現(xiàn)任意占空比、任意分頻的方法

文章出處:【微信號(hào):ZYNQ,微信公眾號(hào):ZYNQ】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    AD8460:高性能高壓大電流任意波形發(fā)生器的技術(shù)剖析

    AD8460:高性能高壓大電流任意波形發(fā)生器的技術(shù)剖析 在電子工程師的設(shè)計(jì)世界里,高性能的任意波形發(fā)生器是實(shí)現(xiàn)復(fù)雜信號(hào)輸出的關(guān)鍵工具。今天,我們就來(lái)深入剖析Analog Devices Inc.推出
    的頭像 發(fā)表于 04-10 09:40 ?115次閱讀

    JL杰理AC696N開(kāi)發(fā)板PWM波形生成與控制(1):頻率、占空比配置

    的時(shí)候直接參考。 PWM常用于調(diào)光、調(diào)速、發(fā)聲等。JL杰理AC696N的定時(shí)器可靈活產(chǎn)生PWM,本文將手把手教你實(shí)現(xiàn)、PWM核心概念 頻率 :每秒周期數(shù)。 占空比
    發(fā)表于 04-03 21:44

    Spectrum 儀器推出 DDS 選件,大幅提升任意波形發(fā)生器靈活性

    德思特優(yōu)質(zhì)合作伙伴Spectrum儀器為其65xx系列任意波形發(fā)生器(AWG)推出全新DDS(直接數(shù)字頻率合成)選件,為生成正弦信號(hào)、精細(xì)可調(diào)參考源、合成正弦波、波形序列、頻率掃描及調(diào)制信號(hào),提供了
    的頭像 發(fā)表于 03-24 17:40 ?1160次閱讀
    Spectrum 儀器推出 DDS 選件,大幅提升<b class='flag-5'>任意</b>波形發(fā)生器靈活性

    任意波形發(fā)生器選型時(shí),哪個(gè)指標(biāo)更關(guān)鍵?

    在電子測(cè)試與測(cè)量領(lǐng)域,任意波形發(fā)生器(AWG)的性能指標(biāo)往往讓人眼花繚亂。大多數(shù)工程師在初次選型時(shí),最先關(guān)注的是采樣率(Sampling Rate),追求極致的 GS/s。然而,在量子計(jì)算、復(fù)雜雷達(dá)
    的頭像 發(fā)表于 03-16 11:47 ?204次閱讀
    <b class='flag-5'>任意</b>波形發(fā)生器選型時(shí),哪個(gè)指標(biāo)更關(guān)鍵?

    函數(shù)信號(hào)發(fā)生器和任意波形信號(hào)發(fā)生器區(qū)別詳解

    函數(shù)發(fā)生器提供了個(gè)預(yù)置列表,里面列出了它可以生成的波形或碼型。 在函數(shù)發(fā)生器中,用戶可以更改頻率、幅度和偏移等波形參數(shù),還可添加簡(jiǎn)單的失真。 任意波形發(fā)生器更為復(fù)雜,能夠仿真真實(shí)世界
    的頭像 發(fā)表于 02-09 16:24 ?410次閱讀
    函數(shù)信號(hào)發(fā)生器和<b class='flag-5'>任意</b>波形信號(hào)發(fā)生器區(qū)別詳解

    變頻器輸出到電機(jī)的三相是否可以任意調(diào)換?

    在工業(yè)自動(dòng)化控制系統(tǒng)中,變頻器與電機(jī)的正確接線是保障設(shè)備穩(wěn)定運(yùn)行的基礎(chǔ)。關(guān)于變頻器輸出到電機(jī)的三相線是否可以任意調(diào)換的問(wèn)題,需要從工作原理、實(shí)際影響和操作規(guī)范三個(gè)維度進(jìn)行深入分析。 、變頻器輸出相
    的頭像 發(fā)表于 01-26 07:40 ?765次閱讀
    變頻器輸出到電機(jī)的三相是否可以<b class='flag-5'>任意</b>調(diào)換?

    Spectrum儀器超高速任意波形發(fā)生器新增DDS選項(xiàng)

    性能。該系列產(chǎn)品在AWG模式下可生成高達(dá)10 GS/s采樣率、16位分辨率及3.9GH帶寬的波形。在新開(kāi)發(fā)的DDS模式下,63xx系列任意波形發(fā)生器可在個(gè)生成通道輸出64路獨(dú)立正弦波,每路波形的
    的頭像 發(fā)表于 11-05 14:48 ?759次閱讀
    Spectrum儀器超高速<b class='flag-5'>任意</b>波形發(fā)生器新增DDS選項(xiàng)

    全新旗艦任意波形發(fā)生器可生成10 GS/s采樣率和2.5 GHz帶寬的波形

    今日宣布推出全新PCIe旗艦系列任意波形發(fā)生器卡(AWG)??茖W(xué)家和工程師能夠通過(guò)該系列產(chǎn)品在電腦上直接生成具有高純度和低失真的高頻任意波形。此外,該系列產(chǎn)品和具有成本效益的商業(yè)現(xiàn)成(Commercial-of-the-shel
    的頭像 發(fā)表于 09-19 14:54 ?931次閱讀
    全新旗艦<b class='flag-5'>任意</b>波形發(fā)生器可生成10 GS/s采樣率和2.5 GHz帶寬的波形

    安捷倫agilent 33250a 函數(shù)發(fā)生器任意波形發(fā)生器

    任意波形比以前更加容易 新agilent 33250a的性能幾乎比同等價(jià)格的任何其它發(fā)生器高倍。其80mhz帶寬能適應(yīng)各種各樣的應(yīng)用要求,它具有各種內(nèi)置信號(hào)、自定義的任意波形和脈沖能力,能幫助您驗(yàn)證設(shè)計(jì),檢驗(yàn)新的構(gòu)想。直接數(shù)字
    的頭像 發(fā)表于 08-13 16:56 ?985次閱讀
    安捷倫agilent  33250a 函數(shù)發(fā)生器<b class='flag-5'>任意</b>波形發(fā)生器

    【RA-Eco-RA6M4開(kāi)發(fā)板評(píng)測(cè)】實(shí)現(xiàn)任意存儲(chǔ)地址內(nèi)容的打印與修改

    代碼 . 前言 前面我們實(shí)現(xiàn)了shell命令行,現(xiàn)在就可以方便的添加 自定義命令了。 為了方便調(diào)試我們來(lái)實(shí)現(xiàn)任意存儲(chǔ)地址的內(nèi)容打印與修改的功能。這樣可以實(shí)現(xiàn)任意外設(shè)寄存器的查看與配
    發(fā)表于 07-19 23:20

    鼎陽(yáng)科技推出新代高端旗艦任意波形發(fā)生器SDG8000A系列

    近日,鼎陽(yáng)科技正式推出新代高端旗艦任意波形發(fā)生器SDG8000A系列。該產(chǎn)品具備最多4個(gè)模擬輸出通道,輸出頻率可達(dá)5 GHz,調(diào)制帶寬可達(dá)2 GHz,且每通道具備最大4G樣本點(diǎn)存儲(chǔ)空
    的頭像 發(fā)表于 05-16 18:17 ?1434次閱讀
    鼎陽(yáng)科技推出新<b class='flag-5'>一</b>代高端旗艦<b class='flag-5'>任意</b>波形發(fā)生器SDG8000A系列

    MAX9377/MAX9378任意邏輯至LVPECL/LVDS轉(zhuǎn)換器,引腳可設(shè)置四分頻電路技術(shù)手冊(cè)

    MAX9377/MAX9378是種全差分、高速、低抖動(dòng)的任意電平到LVPECL/LVDS的轉(zhuǎn)換器,具有有四分頻選擇引腳。其極低的傳輸延遲和高速等特性,尤其適合于多種高速網(wǎng)絡(luò)路由和背板應(yīng)用,在非
    的頭像 發(fā)表于 05-16 15:12 ?4847次閱讀
    MAX9377/MAX9378<b class='flag-5'>任意</b>邏輯至LVPECL/LVDS轉(zhuǎn)換器,引腳可設(shè)置四<b class='flag-5'>分頻</b>電路技術(shù)手冊(cè)

    MAX9375單LVDS/任意邏輯至LVPECL轉(zhuǎn)換器技術(shù)手冊(cè)

    MAX9375是個(gè)高速、全差分、任意電平到LVPECL的轉(zhuǎn)換器,設(shè)計(jì)信號(hào)速率高達(dá)2GHz。其極低的傳輸延遲和高速等特性,尤其適合于多種高速網(wǎng)絡(luò)路由和背板應(yīng)用。
    的頭像 發(fā)表于 05-16 15:07 ?1333次閱讀
    MAX9375單LVDS/<b class='flag-5'>任意</b>邏輯至LVPECL轉(zhuǎn)換器技術(shù)手冊(cè)

    Spectrum儀器推出通過(guò)以太網(wǎng)控制生成寬帶信號(hào)的任意波形發(fā)生器

    波形發(fā)生器(AWG),其輸出速率高達(dá)10 GS/s,分辨率為16位。新產(chǎn)品采用以太網(wǎng)連接技術(shù),可通過(guò)電腦、筆記本電腦以及企業(yè)網(wǎng)絡(luò)直接控制。此次發(fā)布的新產(chǎn)品主要服務(wù)于自動(dòng)化和遠(yuǎn)程測(cè)試領(lǐng)域,尤其適用于直流至2.5GHz寬帶的信號(hào)生成。 產(chǎn)品視頻鏈接 新款任意波形發(fā)生器(AWG
    的頭像 發(fā)表于 05-14 14:29 ?819次閱讀
    Spectrum儀器推出<b class='flag-5'>通過(guò)</b>以太網(wǎng)控制生成寬帶信號(hào)的<b class='flag-5'>任意</b>波形發(fā)生器

    基于 FPGA 的任意波形發(fā)生器+低通濾波器系統(tǒng)設(shè)計(jì)

    在EGO1開(kāi)發(fā)板上實(shí)現(xiàn)個(gè)簡(jiǎn)易的任意波形發(fā)生器。該波形發(fā)生器能夠產(chǎn)生正弦波、方波、三角波與鋸齒波四種波形,可輸出頻率有:1MHz、100KH
    發(fā)表于 05-07 15:34
    白玉县| 肥城市| 武川县| 牙克石市| 广饶县| 阿鲁科尔沁旗| 杭锦后旗| 建宁县| 通河县| 昌图县| 乐安县| 吉水县| 石林| 天气| 长海县| 张家口市| 沁阳市| 乌兰察布市| 革吉县| 无锡市| 泰安市| 岢岚县| 赤城县| 巴彦淖尔市| 阿鲁科尔沁旗| 凤台县| 镇平县| 远安县| 根河市| 昌邑市| 喀喇沁旗| 潮安县| 阿巴嘎旗| 延川县| 那曲县| 喀喇| 二连浩特市| 黑山县| 镇巴县| 苍南县| 兰溪市|