Verilog | M序列发生器

这篇具有很好参考价值的文章主要介绍了Verilog | M序列发生器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、定义

m序列:最长线性反馈移位寄存器序列的简称。是一种反馈移位型结构的电路,由n个移位寄存器加异或反馈网络组成,反馈多项式为本原多项式,其最大序列长度 M = 2 n − 1 M = 2^n-1 M=2n1。是一种伪随机序列、伪噪声码。

伪随机序列:不能预先确定但可以重复实现的序列。

本原多项式:

若反馈移位寄存器的特征多项式为本原多项式,则移位寄存器能产生m序列。

若一个n次多项式f(x)满足:

1)既约的:不能再因式分解;

2)可整除( x m + 1 x^m + 1 xm+1), M = 2 n − 1 M = 2^n-1 M=2n1

3)除不尽 ( x q + 1 ) (x^q + 1) xq+1, q < m;

则称:f(x)为本原多项式。

序列发生器一般有两种结构形式:一种是反馈移位型,另一种是计数型。计数型序列发生器由计数器和组合输出网络两部分组成,序列码从组合输出网络输出。

二、原理

m序列发生器,Verilog,fpga开发

递推方程:

m序列发生器,Verilog,fpga开发

特征方程:

m序列发生器,Verilog,fpga开发

三、代码实现

`timescale 1ns / 1ps
//
// Design Name: 
// Module Name: m_sequence
// Description: 参数化m序列发生器设计
//

module m_sequence#(
	parameter POLY = 8'b10001110,  //以x8+x4+x3+x2+1为例
	parameter LEN = 'd8
)
(
    input        clk,
    input        rst_n,
    output       m_seq
);
 
reg [LEN-1 : 0] shift_reg;
 
always@(posedge clk or negedge rst_n)
begin
    if(!rst_n)
    begin
//        shift_reg <= (1 << LEN) - 1'b1;
				shift_reg <= ~'b0;
    end
 
    else
    begin
//        shift_reg[7] <= (shift_reg[0] & POLY[7]) ^
//                        (shift_reg[1] & POLY[6]) ^
//                        (shift_reg[2] & POLY[5]) ^
//                        (shift_reg[3] & POLY[4]) ^
//                        (shift_reg[4] & POLY[3]) ^
//                        (shift_reg[5] & POLY[2]) ^
//                        (shift_reg[6] & POLY[1]) ^
//                        (shift_reg[7] & POLY[0]);
//        shift_reg[6 : 0] <= shift_reg[7 : 1];
        
        shift_reg[0] <= ^(shift_reg & POLY);
        shift_reg[LEN-1:1] <= shift_reg;
    end
end
 
assign m_seq = shift_reg[LEN-1];
// assign m_seq = shift_reg[0];
endmodule

Testbench文件:

`timescale 1ns / 1ps

module m_sequence_tb();

// M_series Parameters
parameter PERIOD = 10;
//parameter M_len = 8;

// M_series Inputs
reg   clk                                  = 0 ;
reg   rst_n                                = 1 ;

// M_series Outputs
wire  m_seq                                   ;

initial
begin
    forever #(PERIOD/2)  clk=~clk;
end
m_sequence #(
//    .POLY (8'b10001110),
//    .LEN ( M_len )  
    )
 u_M_sequence (
    .clk                     ( clk     ),
    .rst_n                   ( rst_n   ),

    .m_seq                   ( m_seq   )
);

initial
begin

    #(PERIOD*2) rst_n  =  0;
    #(PERIOD*2) rst_n  =  1;

    #(PERIOD*100)

    $finish;
end
endmodule

仿真结果:
m序列发生器,Verilog,fpga开发
m序列发生器,Verilog,fpga开发文章来源地址https://www.toymoban.com/news/detail-722940.html

到了这里,关于Verilog | M序列发生器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Quartus波形发生器频率可调verilog代码仿真

    名称:Quartus波形发生器频率可调verilog代码仿真(文末下载) 软件:Quartus 语言:Verilog 代码功能: 波形发生器频率可调 可产生正弦波,锯齿波,三角波,方波4种波形(频率可调), 2.具有波形选择、起动、停止功能。 设计文档.doc 1. 工程文件 2. 程序文件 3. 程序编译 4. RTL图

    2024年02月03日
    浏览(71)
  • 【STM32+cubemx】0030 HAL库开发:DDS芯片AD9833实现简单的波形发生器

    大家好,我是学电子的小白白,今天带大家了解一款波形发生器芯片——AD9833。 AD9833是AD公司出品的一款DDS波形发生器,能够产生正弦波、三角波和方波输出。 通俗来讲,DDS是一种把波形预先存储在芯片内部的DAC,只要设置好它的工作频率,就能按这个频率来输出特定的波形

    2024年02月02日
    浏览(42)
  • 多路波形发生器的控制

            本次波形发生器,主要使用运算放大器、NE555以及一些其他的电阻电容器件来实现。整体电路图如下所示: 产生的三角波如下: 正弦波如下 方波如下: 运算放大器(Operational Amplifier,简称OP-AMP)是一种重要的电子放大器,常用于模拟电路和信号处理电路中。它是

    2024年02月09日
    浏览(40)
  • proteus——555 PWM 发生器

    什么是 PWM 信号? 脉宽调制(PWM)是一种数字信号,最常用于控制电路。该信号在预定义的时间和速度内设置为高(5v)和低(0v)。信号保持高电平的时间称为\\\"导通时间\\\",信号保持低电平的时间称为\\\"关断时间\\\"。PWM 有两个重要参数,如下所述: PWM 的占空比: PWM信号保持高

    2024年02月07日
    浏览(35)
  • 单片机课程设计波形发生器

    怎么说呢,前面半个月被这个单片机课程设计搞得焦头烂额的,再加上运气属实有点“好”,就脾气有点“暴躁”,好的,也就骂了半天的脏话。有一说一,没有素质确实舒服。 好了,事情目前是过去了,那就好好回顾一下遇到的问题,以及找到了怎样的解决方案,和最后仍

    2024年02月09日
    浏览(48)
  • 基于uA741 PWM发生器

    一、实验要求 二、设计任务与要求 三、设计实验报告要求 一、实验要求 查阅资料,确定方案 用 Multisim 进行验证,并 打印电路、输出波形、元器件参数表 电路基于 uA741 集成运算放大器构成 要求电路 震荡频率为300Hz , 输出电压峰峰值为14v 二、设计任务与要求 设计一个占

    2024年02月11日
    浏览(44)
  • 单片机实验——简易波形发生器设计

    波形发生器广泛地应用于电子和通信等领域,是应用最广泛的电子仪器之一,本设计用51单片机以及DAC0832实现基本波形的输出,参考电路如下: 可以产生方波、三角波、正弦波、锯齿波等波形,用仿真的示波器查看。 用4个按键分别控制输出相应波形。 利用C51设计程序完成以

    2024年02月12日
    浏览(47)
  • 定长指令周期---时序发生器FSM设计

    定长指令周期—时序发生器FSM设计 实验目的 帮助学生理解传统三级时序系统中时序发生器的基本原理,学生能设计定长指令周期的时序发生器状态机以及输出函数。 实验内容 利用数字逻辑电路相关知识设计定长指令周期的三级时序系统,时序发生器包括状态机和输出函数两

    2024年02月12日
    浏览(39)
  • Multisim14.0仿真(五)三角波发生器

    一、仿真原理图: 二、仿真效果:

    2024年02月10日
    浏览(38)
  • 波形发生器设计(频率、占空比、幅值可调)

    1.电路原理图: 2.原理: 采用了文氏电桥的方法,通过自激振荡的方式出波。 其中R 6 ,C 1 ,R 2 ,C 2 构成正反馈支路,令R 1 =R 2 =R,C 1 =C 2 =C,可以计算出正弦波的振荡频率f=1/2πRC。将文氏电路的电容值固定,电阻替换为可调电位器,这样我们就可以控制产生的正弦波的频率。注意

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包