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

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

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

m序列的verilog實現(xiàn)以及使能信號解決跨時終域問題

冬至子 ? 來源:Bug記錄 ? 作者:woodfan ? 2023-06-16 15:12 ? 次閱讀

根據(jù)《通信原理》一書可知,m序列是最長線性反饋移位寄存器的簡稱,它產(chǎn)生的偽隨機序列的周期與其反饋移存器級數(shù)有關(guān);

m序列的屬性有很多,比如:

  1. 周期性,它的周期與它的反饋寄存器的級數(shù)有關(guān),周期為2的級數(shù)N次方-1,比如級數(shù)為4,則周期為2^4-1,即15;
  2. 均衡性,一個周期內(nèi)'1'的個數(shù)比'0'多一個;

假設(shè)一個4級m序列的初始狀態(tài)為(a3,a2,a1,a0) = (1,0,0,0),特征多項式為23;

移位一次,a3與a0模2相加產(chǎn)生新的輸入a4=1^0 = 1,則新的狀態(tài)為(a3,a2,a1,a0) = (1,1,0,0),輸出為0;

依次移位15次后又回到初始狀態(tài)(1,0,0,0)。所以4級反饋移存器的周期為15。

圖片

從書上拍下的圖 圖1

圖片

從書上拍下的m序列框架圖 圖2

從圖2可以清晰的看出m序列的框架原理,只需要N位寄存器,并整體左移/右移,不斷地做異或運算,產(chǎn)生新的值,;

以圖1為例,使用特征多項式23,也就是'010 011',原始狀態(tài)為'1000';參照圖2的框照圖,可以知道n = 4, c1 = c0 = c4 = 1, c2 = c3 = 0;

m序列的實現(xiàn)大致如下:

圖片

圖3 m序列產(chǎn)生always塊

可以看到,當(dāng)en為高的時候,data_count會更新相應(yīng)的值,同時data_out會產(chǎn)生新的輸出值;

en信號在這里作為一個使能信號,它的作用是為了解決高速時鐘下低速運行的問題;

以m序列的產(chǎn)生為例,假設(shè)需要產(chǎn)生符號速率1Mbps的偽隨機序列,而FPGA的晶振為50MHz,而初學(xué)者為了在50MHz下按照1MHz的頻率運行,通常會用兩種方法:

  1. 使用各種分頻的方法將50MHz分頻出1MHz;
  2. 使用PLL等IP核將50MHz輸入之后鎖定輸出1MHz;

而這兩種方法都會產(chǎn)生兩種時鐘域(1MHz,50MHz),兩個時鐘域之間的數(shù)據(jù)通信通常又會牽扯到跨時鐘域同步,亞穩(wěn)態(tài)等問題;

那么有沒有一種方法能夠在50MHz下按照1MHz的頻率運行?有,使用使能信號控制頻率運行。

使能信號的作用就相當(dāng)于一個定時器鬧鐘,定時會拉高一次,提醒電路該運行一次了,然后電路進入空閑狀態(tài)等待下一次使能信號拉高;

這么做的好處有以下幾點:

  1. 減少了其他的時鐘,F(xiàn)PGA設(shè)計需要遵循盡可能少的時鐘域原則;異步時鐘域之間的信號同步,亞穩(wěn)態(tài)問題都可以避免;
  2. 降低了設(shè)計難度,不需要使用IP核,不需要考慮跨時鐘域的處理;
  3. 便于FPGA實現(xiàn),因為FPGA內(nèi)部的寄存器本來就有使能en端,實現(xiàn)起來方便;

使能信號的產(chǎn)生原理也很簡單,使用計數(shù)器不斷地計數(shù),同時使能信號保持低電平;當(dāng)計數(shù)到固定值時,使能信號拉高,計數(shù)器歸零;

設(shè)計內(nèi)容如下:

圖片

圖3

這里INTERVAL是一個常量,可以在實例化的時候修改這個常量值;

其實這個常量值可以設(shè)為輸入端口,這樣可以在運行的過程中在線修改使能信號的周期,更為方便;

最后的VCS仿真圖如下:

圖片

圖4 仿真圖

得出來的數(shù)字與圖1完全對應(yīng),仿真成功!

總結(jié):

  1. m序列實現(xiàn)原理較為簡單,看圖2的框圖,通過這個框圖實現(xiàn)verilog,進而實現(xiàn)相關(guān)的數(shù)字電路;
  2. 為了避免跨時鐘域問題,在高速時鐘下想要低速運行時,可以使用使能信號降低電路的運行頻率,避免跨時鐘域問題,好處可以參見上面的內(nèi)容;
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA設(shè)計
    +關(guān)注

    關(guān)注

    9

    文章

    428

    瀏覽量

    26421
  • 移位寄存器
    +關(guān)注

    關(guān)注

    2

    文章

    253

    瀏覽量

    22166
  • BPSK
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    22887
  • PLL電路
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    6371
  • Verilog語言
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    8192
收藏 人收藏

    評論

    相關(guān)推薦

    時鐘控制信號傳輸設(shè)計方案

    clk2的時鐘。當(dāng)clk1比clk2的頻率高時,則稱模塊1(相對于模塊2)為快時鐘,而模塊2位為慢時鐘。根據(jù)clk1和clk2是不是同步時鐘,可以將上面的時鐘
    發(fā)表于 10-16 15:47 ?1082次閱讀
    <b class='flag-5'>跨</b>時鐘<b class='flag-5'>域</b>控制<b class='flag-5'>信號</b>傳輸設(shè)計方案

    關(guān)于時鐘信號的處理方法

    我在知乎看到了多bit信號時鐘的問題,于是整理了一下自己對于時鐘信號的處理方法。
    的頭像 發(fā)表于 10-09 10:44 ?5612次閱讀

    quartus仿真雙口RAM 實現(xiàn)時鐘通信

    雙口RAM如何實現(xiàn)時鐘通信?。吭趺丛趒uartus ii仿真???
    發(fā)表于 05-02 21:51

    ajax如何克服

    如何克服ajax
    發(fā)表于 04-30 13:25

    怎么實現(xiàn)m序列信號發(fā)生器的設(shè)計?

    m序列信號發(fā)生器由那幾部分組成?怎么實現(xiàn)m序列信號發(fā)
    發(fā)表于 05-10 06:09

    FPGA時鐘處理簡介

    (10)FPGA時鐘處理1.1 目錄1)目錄2)FPGA簡介3)Verilog HDL簡介4)FPGA時鐘處理5)結(jié)語1.2 FPG
    發(fā)表于 02-23 07:47

    看看Stream信號里是如何做時鐘握手的

    popArea里stream.m2sPipe,這個版本效率相較于前者,略低一些:StreamFifoCC這個就沒有什么好說的了,通過fifo來實現(xiàn)stream信號時鐘
    發(fā)表于 07-07 17:25

    FPGA電路實現(xiàn)m序列及應(yīng)用

    ; 根據(jù)本原多項式,確定C0至Cn的取值,在圖4找到對應(yīng)的所有反饋支路; 根據(jù)反饋支路寫出針對最高位的反饋表達式。 例如,在構(gòu)建一個級數(shù)n=8的m序列時: m序列
    發(fā)表于 11-06 17:03

    時鐘信號的幾種同步方法研究

    時鐘信號的同步方法應(yīng)根據(jù)源時鐘與目標(biāo)時鐘的相位關(guān)系、該信號的時間寬度和多個時鐘
    發(fā)表于 05-09 15:21 ?63次下載
    <b class='flag-5'>跨</b>時鐘<b class='flag-5'>域</b><b class='flag-5'>信號</b>的幾種同步方法研究

    使用Matlab和Verilog實現(xiàn)fibonacci序列包括源代碼和testbench

    使用Matlab和Verilog實現(xiàn)fibonacci序列包括源代碼和testbench(電源技術(shù)論壇app)-使用Matlab和Verilog實現(xiàn)
    發(fā)表于 09-16 14:41 ?13次下載
    使用Matlab和<b class='flag-5'>Verilog</b><b class='flag-5'>實現(xiàn)</b>fibonacci<b class='flag-5'>序列</b>包括源代碼和testbench

    基于FPGA的時鐘信號處理——MCU

    問題,不過請注意,今后的這些關(guān)于異步信號處理的文 章里將會重點從工程實踐的角度出發(fā),以一些特權(quán)同學(xué)遇到過的典型案例的設(shè)計為依托,從代碼的角度來剖析一些特權(quán)同學(xué)認為經(jīng)典的時鐘信號處理
    發(fā)表于 11-01 16:24 ?11次下載
    基于FPGA的<b class='flag-5'>跨</b>時鐘<b class='flag-5'>域</b><b class='flag-5'>信號</b>處理——MCU

    單位寬信號如何時鐘

    單位寬(Single bit)信號即該信號的位寬為1,通??刂?b class='flag-5'>信號居多。對于此類信號,如需時鐘
    的頭像 發(fā)表于 04-13 09:11 ?1193次閱讀

    時鐘電路設(shè)計:多位寬數(shù)據(jù)通過FIFO時鐘

    FIFO是實現(xiàn)多位寬數(shù)據(jù)的異步時鐘操作的常用方法,相比于握手方式,F(xiàn)IFO一方面允許發(fā)送端在每個時鐘周期都發(fā)送數(shù)據(jù),另一方面還可以對數(shù)據(jù)進行緩存。需要注意的是對FIFO控制信號的管
    的頭像 發(fā)表于 05-11 14:01 ?2556次閱讀
    <b class='flag-5'>跨</b>時鐘<b class='flag-5'>域</b>電路設(shè)計:多位寬數(shù)據(jù)通過FIFO<b class='flag-5'>跨</b>時鐘<b class='flag-5'>域</b>

    時鐘電路設(shè)計總結(jié)

    時鐘操作包括同步時鐘操作和異步時鐘操作。
    的頭像 發(fā)表于 05-18 09:18 ?618次閱讀
    <b class='flag-5'>跨</b>時鐘<b class='flag-5'>域</b>電路設(shè)計總結(jié)

    時鐘電路設(shè)計:單位寬信號如何時鐘

    單位寬(Single bit)信號即該信號的位寬為1,通??刂?b class='flag-5'>信號居多。對于此類信號,如需時鐘
    的頭像 發(fā)表于 08-16 09:53 ?988次閱讀
    <b class='flag-5'>跨</b>時鐘<b class='flag-5'>域</b>電路設(shè)計:單位寬<b class='flag-5'>信號</b>如何<b class='flag-5'>跨</b>時鐘<b class='flag-5'>域</b>