序列产生器

阅读: 评论:0

序列产生器

序列产生器

序列信号产生器

顾名思义,就是周期性的产生某段序列信号,这里介绍几种方法。

**第一种方法,**最容易想到的方法,设置一个长度和序列长度一样长的信号,在复位时,赋值为该段序列,接下来循环移位即可。
例 :设计一个序列信号发生器电路,能在CLK信号作用下周期性输出“1010110111”的序列信号。


module sequence_generator(input clk ,input rst_n ,output out_sequence //可以根据题目要求加输出使能,读者自行扩展);reg [9:0] sequence  ; always@(posedge clk or negedge rst_n) beginif(!rst_n) beginsequence <= 10'b1010110111 ;//可以替换成其他序列end else beginsequence <= {sequence[8:0],sequence[9]} ;//循环移位,先输出高位endendassign out_sequence = sequence[9] ; endmodule

在这种方法中,**优点是代码简洁,通熟易懂,但是也有个缺陷,就是需要花费的寄存器数量较多。
**
下面介绍第二种方法。
注意到这里序列为10’b1010110111 ,长度为10,也就是共10种状态,需要至少4个寄存器(2^4=16),

假如这里我们只使用四个寄存器,我们观察一下移位状态。
注意 移位方向为左移,移入的数据为多少是怎么判断的呢?
以这个为例,首先第一个状态的数据为从高位取寄存器数量的长度,假如这里使用五个触发器,则第一个状态为10101,则下一个数据移入为什么呢?答案是移入的为10101后面一个数据,依次移入后面五个数据,当后面五个数据移入完后在回到高位继续依次移入五个数据完成闭环。
具体也可参考我画的状态转移表

1010–0101–1011–0110–1101–1011·····状态有重复,不可以,因为寄存器的输入和当前状态有关,不允许相同的状态出现两个不同的输出。
再看五个寄存器;
10101—01011–10110–01101–11011-10111–01111–11110—11101–11010 ··· 10101,没有重复,再回到了10101的循环。
因此我们列出状态转移表


卡诺图及其化简都已写出,具体的rtl代码大家就自己写啦。

下面还有两种方法,一种为状态机,另一种为计数器,给出一篇文章:序列信号发生器

本文发布于:2024-01-28 13:59:44,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064215917918.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:产生器   序列
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23