cn=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1]%cn为移位寄存器,从左向右由小到大
an=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1] %初始寄存器内容
len=length(an)%所需的移位寄存器的长度
L=2^len-1%m序列的长度
an=[zeros(1,len-1),1]%初始枝余仿猛纤寄存器内容,zeros矩阵函数
m=zeros(1,L)%提速
m(1)=an(1)%m序列的第一个输出毁埋码元
for i=2:L
an1(1:len-1)=an(2:len)%移位
an1(len)=mod(sum(cn.*an),2)%寄存器与反馈的模2和
an=an1%移位后的寄存器
m(i)=an(1)%新的寄存器输出
end
one_num=sum(m,2)
zero_num=L-one_num
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%画饼图
num=[one_num zero_num]%输入数据
name={'1的概率','0的概率'}%输入标签
name1={'1的数量','0的数量'}%标题
bili=num/L
percent=round(bili*100000000000000000)/100%计算百分比
percent=num2str(percent')%转化为字符型
percent=cellstr(percent)%转化为字符串数组
biaoti=num2str(num')%转化为字符型
biaoti=cellstr(biaoti)%转化为字符串数组
%在每个标签后加2个空格
for i=1:length(name)
name(i)={[name{i},blanks(2)]}
end
bfh=cellstr(repmat('%',length(num),1))%创建百分号字符串数组
c=strcat(name,percent',bfh')
bt=strcat(name1,biaoti')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%饼图
figure(1)
pie(num,c)
title(bt)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%画波形图
figure(2)
%subplot(3,1,2)
stairs(m)%对m序列绘图
xlabel('n')
ylabel('y')
title('m序列')
%%%%%%%%%%%%%%%%%%%%%%自相关函数由于阶数大所以运行时间久
%求自相关函数
%rho=zeros(1,L)
%bwb=zeros(1,L)
%xg=2*m-1 %变为双极性序列,1对应1,0对应-1
%for j=0:L-1
%bwb=[xg(1+j:L),xg(1:j)]
% rho(j+1)=sum(m.*bwb)
%end
%j=-L+1:L-1%调整自相关图像显示的横坐标范围
%rho=[fliplr(rho(2:L)),rho]
%figure(3)
%plot(j,rho)
%axis([-L L -0.1 1.2])%设置横纵坐标范围
%title('m序列的自相关函数')
我升行谈m序列代码赋值下来是,发现wire和x中间没有空格,这可能是导致吵碰你没有输出带槐的原因,个人建议你的代码这样写:module
prbs(clk,rst,m_out)
input
clk,rst
output
m_out
reg[7:0]
reg_buf
reg
x
always@(posedge
clk
or
posedge
rst)
if(!rst)
begin
reg_buf[7:0]
<=
8'b1000_0000
x
<=
1'b1
end
else
begin
reg_buf[7:0]
<=
{reg_buf[6:0],x}
x
<=
reg_buf[7]^reg_buf[3]^reg_buf[2]^reg_buf[1]
end
assign
m_out
=
reg_buf[7]
endmodule
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)