本文主要介紹Matlab如何實現(xiàn)移位寄存器,首先介紹的是移位寄存器的原理及作用,其次介紹了m序列的生成原理及m序列的matlab 仿真實現(xiàn),最后介紹了Matlab如何實現(xiàn)移位寄存器的代碼。
移位寄存器的原理及作用
1、移位寄存器原理
移位寄存器不僅能寄存數(shù)據(jù),而且能在時鐘信號的作用下使其中的數(shù)據(jù)依次左移或右移。
四位移位寄存器的原理圖如圖所示。F0、F1、F2、F3是四個邊沿觸發(fā)的D觸發(fā)器,每個觸發(fā)器的輸出端Q接到右邊一個觸發(fā)器的輸入端D。因為從時鐘信號CP的上升沿加到觸發(fā)器上開始到輸出端新狀態(tài)穩(wěn)定地建立起來有一段延遲時間,所以當時鐘信號同時加到四個觸發(fā)器上時,每個觸發(fā)器接收的都是左邊一個觸發(fā)器中原來的數(shù)據(jù)(F0接收的輸入數(shù)據(jù)D1)。寄存器中的數(shù)據(jù)依次右移一位。
2、移位寄存器作用
移位寄存器是一種存儲器,存在里邊的數(shù)據(jù)可以從低位向高位移動或從高位向低位移動。例如一個8位的移位寄存器,存在其中的數(shù)據(jù)為11001010,如果向左(高位)移動一次,就變成1001010X,原來的最高位的1移出,最低位的X可以是新移入的數(shù)據(jù),也可以是0(不同型號的移位寄存器對此有不同的規(guī)定)。
m序列的定義及原理
1、m序列的定義
m序列是由n級線性移位寄存器產生的周期為1的碼序列,是最長線性移位寄存器序列的簡稱。
關于m序列的基本生成原理網上介紹很多了,其主要步驟就是寄存器的移位和異或運算。即:特定位置寄存器(由反饋系數(shù)決定)的值取出來進行異或運算(也就是或者全部相加后模2的運算),寄存器中的值往輸出端移位,最后一位輸出,第一個寄存器放剛才異或運算中得到的值。
2、m 序列的產生原理
產生 m 序列的線性反饋移位寄存器由寄存器加上反饋產生,n 階線性移位寄存器的產生原理框圖如圖 1 所示。
圖 1 中 a0,a1, … ,an-1 為 n 個移位寄存器某時刻的狀態(tài),c0,c1,… ,cn 為移位寄存器的反饋系數(shù),對應位置 ci 等于 1 表示有反饋,等于 0 表示無反饋,加法器采用模 2 相加。
反饋系數(shù)決定了反饋移位寄存器產生的 m 序列碼型,對于圖 1 中反饋移位寄存器,反饋邏輯為 c0,c1,…,cn,則
{an}=c1an-1+c2an-2+…+cna0
只要反饋邏輯 ci 確定,寄存器產生的序列就確定了。n 級移位寄存器產生的偽隨機序列,其最長周期為 2n-1。
生成 m 序列的首要問題是要求得移位寄存器的特征多項式, 特征多項式必須為本原多項式, 本原多項式可以用matlab 軟件編程求得,也可以直接查表獲得,
m序列生成函數(shù)的MATLAB代碼
m 序列的 matlab 仿真實現(xiàn)
用 matlab 編程求本原多項式
本仿真中采用四級移位寄存器, 產生周期為 15 的 m 序列。 對應 n=4 的 m 序列的本原多項式求解程序如下:
n=4;
x=gfprimfd(n,‘all’);
for i=1:size(x);
gfpretty(x(i,:))
end;
運行程序,得到 n=4 時的所有本原多項式如下:
x =
1 1 0 0 1
1 0 0 1 1
1+x+x4,1+x3+x4
用 simulink 搭建 m 序列產生器
找到了本原多項式,可以搭建仿真模型。 此處選擇 3.1 節(jié)獲得的第二種本原多項式進行仿真,反饋分別為 1 0 0 1 1搭建的仿真模型如圖 2 所示。
圖 2 中采用四個長度為 1 的 Queue 充當移位寄存器,構 成 15 位 m 序 列 發(fā) 生 器。 它 能 與 matlab 中 得 PN SequeueGenerator 模塊產生相同的 PN 碼,PN Sequeue Generator 的初始設置為 Generator polynomial [1 0 0 1 1 ],Initial states[0 0 01]。 對應的圖 2 中移位寄存器模型的反饋系數(shù)為 c0=1,c1=0,c2=0,c3=1,c4=1,寄存器初始狀態(tài)為 a0=1,a1=a2=a3=0。2.2.2 第一個寄存器 Queue 的 Trigger Type 設為 Either edge,其余為 Rising edge。
后兩個隊列輸出進行 XOR 運算, 然后反饋給第一個移位寄存器的輸入,對應于反饋系數(shù) 1 0 0 1 1 中的三個 1。
運行仿真模塊,得到的偽隨機序列如圖 3 所示。 產生的m 序列取其一個完整的周期,長度為 15,碼型為 1 0 0 0 1 0011010111 。該 m 序列波形與 PN Sequeue Generator 模塊產生的波形一 致,PN Sequeue Generator 模 塊 產 生 的 m 序列的相位必須手動設置,而該仿真模型產生的為隨機序列的相位可以通過圖 2 中來自 In1 的脈沖進行自動調整,具有很大的靈活性。
m序列產生函數(shù)
function [mseq] = m_sequence (fbconnection);
n = length (fbconnection);
N = 2?n - 1;
register =[ones (1,n-1) 1];%定義移位寄存器的初始狀態(tài)
mseq(1)= register(n)
for i = 2:N
newregister(1)= mod(sum(fbconnection. *register),2);
for j = 2:n
newregister(j)= register(j-1)
end;
register = newregister;
mseq(i)= register(n)
end;
存儲為m_sequence.m
主函數(shù):
clc;
clear all;
fbconnection = [0 0 1 0 1];
mseq = m_sequence(fbconnection);
存儲為mxulie.m
輸出結果為:mseq =
Columns 1 through 21
1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 0
Columns 22 through 31
0 1 0 0 1 0 1 1 0 0
-
matlab
+關注
關注
188文章
2998瀏覽量
233233 -
移位寄存器
+關注
關注
3文章
287瀏覽量
22649
發(fā)布評論請先 登錄
74VHC595;74VHCT595移位寄存器規(guī)格書

74HC165;74HCT165移位寄存器規(guī)格書

74HC594-Q100;74HCT594-Q100帶輸出寄存器的8位移位寄存器規(guī)格書

74HC594;74HCT594移位寄存器規(guī)格書

74HC595;74HCT595移位寄存器規(guī)格書

74HC597;74HCT597移位寄存器規(guī)格書

XILINX FPGA CLB單元之移位寄存器

移位寄存器的工作原理和類型

評論