返回信息流module conv_interleaving(input Din,
input CLK,
output reg Dout);
reg [4:0] count;
reg [24:0] Regin;
reg [24:0] Regout;
//计数器、输入序列寄存器置零
initial
begin
count <= 0;
Regin <= 0;
end
always@(posedge CLK)
begin
count <= count + 1;
case(count)
5'b 00001:
begin
Regin[0] <= Din;
Dout <= Regout[0];
end
5'b 00010:
begin
Regin[21] <= Din;
Dout <= Regout[1];
end
5'b 00011:
begin
Regin[17] <= Din;
Dout <= Regout[2];
end
5'b 00100:
begin
Regin[13] <= Din;
Dout <= Regout[3];
end
5'b 00101:
begin
Regin[9] <= Din;
Dout <= Regout[4];
end
5'b 00110:
begin
Regin[5] <= Din;
Dout <= Regout[5];
end
5'b 00111:
begin
Regin[1] <= Din;
Dout <= Regout[6];
end
5'b 01000:
begin
Regin[22] <= Din;
Dout <= Regout[7];
end
5'b 01001:
begin
Regin[18] <= Din;
Dout <= Regout[8];
end
5'b 01010:
begin
Regin[14] <= Din;
Dout <= Regout[9];
end
5'b 01011:
begin
Regin[10] <= Din;
Dout <= Regout[10];
end
5'b 01100:
begin
Regin[6] <= Din;
Dout <= Regout[11];
end
5'b 01101:
begin
Regin[2] <= Din;
Dout <= Regout[12];
end
5'b 01110:
begin
Regin[23] <= Din;
Dout <= Regout[13];
end
5'b 01111:
begin
Regin[19] <= Din;
Dout <= Regout[14];
end
5'b 10000:
begin
Regin[15] <= Din;
Dout <= Regout[15];
end
5'b 10001:
begin
Regin[11] <= Din;
Dout <= Regout[16];
end
5'b 10010:
begin
Regin[7] <= Din;
Dout <= Regout[17];
end
5'b 10011:
begin
Regin[3] <= Din;
Dout <= Regout[18];
end
5'b 10100:
begin
Regin[24] <= Din;
Dout <= Regout[19];
end
5'b 10101:
begin
Regin[20] <= Din;
Dout <= Regout[20];
end
5'b 10110:
begin
Regin[16] <= Din;
Dout <= Regout[21];
end
5'b 10111:
begin
Regin[12] <= Din;
Dout <= Regout[22];
end
5'b 11000:
begin
Regin[8] <= Din;
Dout <= Regout[23];
end
5'b 11001:
begin
Regin[4] <= Din;
Dout <= Regout[24];
end
endcase
if(count==5'b11001)
begin
count <= 1;
Regout <= Regin;
end
end
endmodule
这个是我在网上下的交织器程序,5*5的,但是怎么看也看不懂……
1.regin和regout的初值没有定义,那么在count=00001的时候,regout直接赋给了Dout输出,能输出什么呢?
2.把数据输入变量Din赋给regin[0],regin[21],regin[17],regin[13],regin[9]……这个顺序是为什么呢?
后天就要交作业了,拜托大牛了!谢谢!
这是一条镜像帖。来源:北邮人论坛 / circuit / #17652同步于 2011/6/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖
【求助】大牛帮忙看一下verilog程序
ymc252669096
2011/6/29镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
通原课上交织时理解也不深,记得就是把输入通过矩阵把连续错误分散吧。
这个借本通信数字电路设计的书来看看就行了吧。。。
不过我前天去图书馆时好像这类书被借的也差不多了,不知道现在还有没有。
交织器的原理是:比如5*5,那么第一列就是1,6,11,16,21,第二列2,7,12,17,22,以后以此类推。原则是按列写入,按行输出。但是这段代码我实在是没有明白……
【 在 ymc252669096 的大作中提到: 】
: 交织器的原理是:比如5*5,那么第一列就是1,6,11,16,21,第二列2,7,12,17,22,以后以此类推。原则是按列写入,按行输出。但是这段代码我实在是没有明白……
你可以写个测试文件测试下吧。。。
一个问题,你在用软件的思维看代码。。。。。。。。。。干嘛要初值?上电几ns第一个值就没有了,管他初值是什么呢
第二个问题,这个得把整个表格写出来看看了,原则是更新的值在读取之后。要理解这个,还是首要把第一个问题给理解了。
交织器是有延迟的。。so前面输出什么不用管它
initial语句是不可综合的。你就是赋了初值综合的时候他也不理你的
这个交织器啊。。这不就是一个进去的时候乱七八糟的填到表里,然后再顺序读出来么
你可以认为25个clk是一个周期
【 在 ymc252669096 (爱投三分) 的大作中提到: 】
: module conv_interleaving(input Din,
: input CLK,
: output reg Dout);
: ...................