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...