原創 基於FPGA的M序列發生器設計

2021-10-05 03:07:34 字數 2409 閱讀 3114

1.1 m序列簡介

m序列是最長線性反饋移位暫存器序列的簡稱。它是由帶線性反饋的移位暫存器產生的週期最長的序列。一般來說,乙個n級線性反饋移位暫存器可能產生的最長週期為(2^n-1)。

因為移位暫存器的初始值不能為0,否則不管怎麼移,移位暫存器的值都不為0,所以最長週期為(2^n-1)。

1.2 應用範圍

m序列是廣泛應用的一種偽隨機序列,其在通訊領域有著廣泛的應用,如擴頻通訊,衛星通訊的分碼多重進接,數字資料中的加密、加擾、同步、誤位元速率測量等領域。

在所有的偽隨機序列中,m序列是最重要、最基本的一種偽隨機序列。它容易產生,規律性強,有很好的自相關性和較好的互相關性。

1.3 m序列模型

n級線性移位暫存器結構如下

上圖可以轉換成數學表示式

其中ci 的取值為0或1,其中c0 、cn-1 為1。當此式為本原多項式(只能被1和自身整除,類似於質數)時才能產生m序列。

這裡給出2階到10階的本原多項式

1.4 fpga實現

我們以7階、8階本原多項式為例設計兩個m序列發生器

1.4.1 7階架構設計

注: 代表異或

說明:r0異或r4賦值給r6,其它值按位移就可以。

訊號說明

**如下

module ms7_generate(clk, rst_n, en, ms7, r7);

parameter init = 7'b000_0001;

input clk, rst_n;

input en;

output ms7;

output reg [6:0] r7;

assign ms7 = r7[0];

always @ (posedge clk or negedge rst_n)begin

if(!rst_n)

r7 <= init;

else if(en)begin

r7[0] <= r7[1];

r7[1] <= r7[2];

r7[2] <= r7[3];

r7[3] <= r7[4];

r7[4] <= r7[5];

r7[5] <= r7[6];

r7[6] <= r7[0] ^ r7[4];

endelse

r7 <= r7;

endendmodule

1.4.2 8階架構設計

訊號說明

**如下

module ms8_generate(clk, rst_n, en, ms8, r8);

parameter init = 8'b0000_0001;

input clk, rst_n;

input en;

output ms8;

output reg [7:0] r8;

assign ms8 = r8[0];

always @ (posedge clk or negedge rst_n)begin

if(!rst_n)

r8 <= init;

else if(en) begin

r8[0] <= r8[1];

r8[1] <= r8[2];

r8[2] <= r8[3];

r8[3] <= r8[4];

r8[4] <= r8[5];

r8[5] <= r8[6];

r8[6] <= r8[7];

r8[7] <= r8[0] ^ r8[4] ^ r8[5] ^ r8[6];

endelse

r8 <= r8;

endendmodule

1.5**驗證

tb檔案參考工程資料夾中的sim資料夾

7階**波形

8階**波形

基於FPGA的任意訊號發生器

隨著科學技術的日新月異的發展,各種各樣的電子產品也正在逐步向著高精尖技術方向發展。電子技術廣泛的應用於工業 農業 交通運輸 航空航天 國防建設等國民經濟的諸多領域中,數字電子技術已經滲透到了人們生活的各個層面,訊號發生器是一種常用的訊號源,廣泛應用於電子電路 自動控制和科學試驗等領域。它是一種為電子...

基於FPGA實現DDS正弦波發生器

名言 學無止境。1 開發環境 作業系統 win7 開發軟體 ise14.7 硬體平台 xilinx fpga spartan6 2 dds簡介 dds direct digital synthesizer 直接數字合成器。dds也稱訊號發生器,用它來產生一定頻率的正弦波。3 dds設計方案 基於fp...

mysql建立序列發生器 Oracle序列生成器

在實際開發中,設計資料表的時候會把某些字段定義成乙個自動增長的 唯一的流水號,例如記錄編號 日誌編號等,mysql和sql server採用的是自增欄位,oracle和postgresql採用了更靈活的序列生成器。在本文中,把序列生成器簡稱為序列。一 建立序列 建立序列的語法如下 create se...