4级m序列发生器设计参考

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3级m序列发生器设计方案

图2.2 七位反馈移位移存器

方案一:

根据图2.2的结构模型,对于级数为n=3的m序列,可设置四个寄存器,将寄存器0和寄存器1进行异或运算,把结果赋给寄存器3。然后将寄存器2,1,0右移一位。再将寄存器3赋给寄存器2。这样就不会产生数据覆盖。最后把寄存器0输出。同理可得15位m序列,级数n=4的verilog建模思路。

方案二:

由于7位m序列1110010可用三位二进制7种状态表示,因此可用Moore有限状态机的行为进行建模方法。Moore有限状态机,其输出值只取决于当前状态,与输入值无关。可以通过在always语句块内使用case语句来实现,在每个case分支都应当有输出值及状态转换。设状态A=3'b111,B=3'b011,C=3'b001,D=3'b100,E=3'b010,F=3'b101,G=3'b110;它们的转换关系图如图2.3:

图 2.3 m序列发生器的状态转移图

方案一的程序比方案二简洁,方案二的思路比方案一更明白。二者的各有千秋。

4级m序列及其Manchester编码

module manchester_encodingnew(enc_data,m_test,clk);

parameter BYTE_WIDTH=8;

input clk;

output enc_data;

output m_test;

reg phase;

reg busy;

wire clkr;

wire enc_data;

reg [2:0] bit_count;

reg reg_data;

reg Data_CLKT,Buff;

reg [3:0]m_Buff;

assign clkr=clk;

initial

begin

Data_CLKT=0;

busy=0;

phase=0;

bit_count=0;

end

always@(posedge clkr)

begin

Data_CLKT=~Data_CLKT;

end

always@ (posedge clkr)

begin

phase=~phase;

end

always@ (posedge clkr)

begin

if((bit_count==BYTE_WIDTH-1)&&phase)

busy=0;

else

busy=1;

end

always@(posedge clkr)

begin

if(phase&&busy)

bit_count=bit_count+1;

end

always@ (posedge clkr)

begin

if(phase&&busy)

begin

Buff=m_Buff[1]^m_Buff[0]^(m_Buff==0);

m_Buff[0]=m_Buff[1];

m_Buff[1]=m_Buff[2];

m_Buff[2]=m_Buff[3];

m_Buff[3]=Buff;

end

end

always@ (posedge clkr)

begin

reg_data=m_Buff[0];

end

assign m_test=reg_data;

assign enc_data=reg_data^~phase;

endmodule

相关文档
最新文档