【序列信号发生器(IC)】

  在数字信号传输的过程中,有时会需要产生一组特定的串行数字信号,产生这种序列信号的电路称为序列信号发生器。
通过数字信号设计与Verilog代码理解序列信号发生器;下面介绍几种Verilog编程中常用的方法。
1、环形移位寄存器
  例如需要发出一组100111的一组6位序列数。首先确定需要知道N位环形寄存器由N位寄存器组成

module signal_maker (
	//system signals
	input					clk			, 
	input					load			,
	input      [5:0]        D          ,
	//
	output                  out

);
    initial Q=100111;
    reg[5:0] Q;
    always @(posedge clk )begin 
    	if (load) 
    		Q<=D;
    		
    	
    	else 
    		Q <= {Q[4:0],Q[5]};
    	
    end
    assign out = Q[5];
endmodule

2.反馈移位寄存器
  该序列信号产生器不像环形移位寄存器一样,寄存器的多少取决于序列的长度。它由移位寄存器与组合逻辑电路组成。
  (1)首先根据序列信号的循环周期M,来确定序列的寄存器位数n,由M=6可暂时计算最佳n的值为3,即用3位寄存器来循环100111。
  (2)确定寄存器的M个状态,100,001,011,111,111,110。在这六个状态中111重复,因此寄存器位数需加1,n=4,重新确认状态:1001,0011,0111,1111,1110,1100,状态无重复。
  (3)根据状态确定移位寄存器的态序表和反馈函数表,求出反馈函数F
请添加图片描述
反馈移位序列信号发生器Verilog代码:

module signal_maker (
	//system signals
	input					clk			, 
	input					load			,
	input      [3:0]        D          ,
	//
	output                  out

);
    wire w;
    reg[3:0] Q;
    always @(posedge clk )begin 
    	if (load) 
    		Q<=D;    		    	
    	else 
    		Q <= {Q[2:0],w};    	
    end
    assign w = (~Q[3]) | ( (~Q[1]) & (~Q[2]) ) | ( Q[3] & (~Q[2]) );
    assign out = Q[3]; 
endmodule

3.计数器+组合逻辑电路(100111)
  此电路和反馈序列信号发生器大致相同,都是由时序电路与组合电路构成,不同在于反馈序列信号发生器的时序状态由移位寄存器构成,输出信号取最高位,而计数序列发生器,由计数器代替时序状态的产生,输出由组合电路产生。
  首先确定计数模值M=6,因此可知计数器状态从000——101可表示这六个序列数字。
  接下来可以得到输出的组合逻辑真值表。
请添加图片描述
计数序列信号发生器Verilog代码:

module signal_maker (
	//system signals
	input					clk			, 
	input					rst			,
	//
	output                  out

);
   
    reg [2:0] cnt;
    always @(posedge clk )begin 
    	if (!rst) 
    		cnt<=3'd0;    		    	
    	else 
    		cnt<=cnt+1'b1;    	
    end
    assign out = cnt[2] | ( (~cnt[1]) & (~cnt[0]) ) | (cnt[1] & cnt[0]);
endmodule

注释:反馈移位序列信号发生器是由移位寄存器组成的,寄存器的输出是由高位先输出,每次移动一位进来,当1001时,更新下一个状态需要输入一位,由100111可知,下一位为1,依此类推就可以写出态序图。计数序列信号发生器因为由计数器来更新状态,所以当为000时对应100111中第一个输出的数,因此先输出高位,依此写出输出真值表。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值