日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Verilog语言生成4位伪随机码

發布時間:2023/12/9 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Verilog语言生成4位伪随机码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Verilog語言生成4位偽隨機碼

    • 關于偽隨機碼的定義及基本特性
    • 本原多項式
    • 代碼

關于偽隨機碼的定義及基本特性

偽隨機碼又稱偽隨機序列,它是具有類似于隨機序列基本特性的確定序列。通常廣泛應用二進制序列,因此我們僅限于研究二進制序列。二進制獨立隨機序列在概率論中一般稱為貝努利(Bernoulli)序列,它由兩個元素(符號)0, 1或1, -1組成。序列中不同位置的元素取值相互獨立取0取1的概率相等等于1/2:我們簡稱此種系列為隨機系列。

隨機序列具有以下三個基本特性

1)在序列中“0”和“1”出現的相對頻率各為1/2。

2)序列中連0或連1稱為游程連0或連1的個數稱為游程的長度,序列中長度為1的游程數占游程總數的1/2;長度為2的游程數占游程總數的1/4;長度為3的游程數占游程總數的1/8;長度為n的游程數占游程總數的1/2n(對于所有有限的n)。此性質我們簡稱為隨機序列的游程特性。

3)如果將給定的隨機序列位移任何個元素,則所得序列的和原序列的對應的元素有一半相同,一半不同。

如果確定序列近似滿足以上三個特性則稱此確定序列為偽隨機序列。
————————————————
原文鏈接:https://blog.csdn.net/qq_40532956/article/details/80109534

本原多項式

在設計偽隨機碼前要確定碼長,從而確定本原多項式,常用的本原多項式見下表所示:

m序列周期為2n-1,由移位寄存器和異或門構成,n表示移位寄存器的個數。

另外,在查閱資料的過程中還了解到移位寄存器的相關知識,可以參考如下的博客:
https://blog.csdn.net/qq_23947237/article/details/90238787

其中對于偽隨機碼、m序列、移位寄存器和仿真內容進行了較為詳細的梳理和總結。

代碼

Verilog語言和通信相關的偽隨機碼知識都是筆者第一次接觸,在長時間的查閱相關資料學習基礎知識和應用方法后決定首先選擇碼長為4的編碼進行練習。

m序列是最常用的偽隨機序列,是最長線性反饋移位寄存器序列的簡稱。如果是4級的寄存器(下面都假設n=4),那么最長周期是24-1=15

m序列的特征多項式必須是4次的本原多項式。必須滿足條件

1、既約的;

2、可整除x15+1,這里15=24-1;

3、不可整除x^q+1,q<15。

由上表,已知4次的本原多項式為x^4+x+1,那么反饋邏輯就是a4 = a1 + a0(mod 2)。

然后賦予初狀態為0001,那么由線性反饋邏輯和初狀態就能決定m序列了。

編譯環境:QuartusII 15.0
仿真環境:Modelsim Altera 10.3d(與Quartus15.0適配版)

module testcode(clk,rst_n,out_data);
input clk;
input rst_n;
output reg out_data; //輸出的偽隨機碼
reg [3:0]temp = 4’b0001;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n) //復位信號無效時
out_data <= 1’b0;
else begin
temp[0] <= temp[2] + temp[3]; //t0=t2+t3
temp[3:1] <= temp[2:0]; //t3-1=t2-0,即右移一位
out_data <= temp[3]; //輸出數據為t3
end
end
endmodule

仿真程序:

`timescale 1ns/1ns
module testcode_tb;
reg clk,rst_n;
wire out_data;
testcode testcode_0(.clk(clk),
.rst_n(rst_n),
.out_data(out_data));
initial clk = 1;
always #25 clk = ~clk;
initial begin
rst_n <= 1’b0;
#200;
rst_n <= 1’b1;
#5000;
$stop;
end

仿真效果:


從仿真效果來看,基本實現了預計的效果。

但是在整個項目工程的書寫過程中仍有許多磕磕碰碰,且對移位寄存器的工作原理還不算熟知,要繼續查閱資料后嘗試使用Verilog語言生成更多碼位的偽隨機碼。

總結

以上是生活随笔為你收集整理的Verilog语言生成4位伪随机码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。