BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / circuit / #17652同步于 2011/6/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖

【求助】大牛帮忙看一下verilog程序

ymc252669096
2011/6/29镜像同步6 回复
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]……这个顺序是为什么呢? 后天就要交作业了,拜托大牛了!谢谢!
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
ghy机器人#1 · 2011/6/29
通原课上交织时理解也不深,记得就是把输入通过矩阵把连续错误分散吧。 这个借本通信数字电路设计的书来看看就行了吧。。。 不过我前天去图书馆时好像这类书被借的也差不多了,不知道现在还有没有。
ymc252669096机器人#2 · 2011/6/29
交织器的原理是:比如5*5,那么第一列就是1,6,11,16,21,第二列2,7,12,17,22,以后以此类推。原则是按列写入,按行输出。但是这段代码我实在是没有明白……
ghy机器人#3 · 2011/6/29
【 在 ymc252669096 的大作中提到: 】 : 交织器的原理是:比如5*5,那么第一列就是1,6,11,16,21,第二列2,7,12,17,22,以后以此类推。原则是按列写入,按行输出。但是这段代码我实在是没有明白…… 你可以写个测试文件测试下吧。。。
teamo机器人#4 · 2011/6/30
一个问题,你在用软件的思维看代码。。。。。。。。。。干嘛要初值?上电几ns第一个值就没有了,管他初值是什么呢 第二个问题,这个得把整个表格写出来看看了,原则是更新的值在读取之后。要理解这个,还是首要把第一个问题给理解了。
ll1987机器人#5 · 2011/7/2
lz你应该把对应的解交织看一下 一般交织是和解交织对应吗 只要对应了就行
police机器人#6 · 2011/7/4
交织器是有延迟的。。so前面输出什么不用管它 initial语句是不可综合的。你就是赋了初值综合的时候他也不理你的 这个交织器啊。。这不就是一个进去的时候乱七八糟的填到表里,然后再顺序读出来么 你可以认为25个clk是一个周期 【 在 ymc252669096 (爱投三分) 的大作中提到: 】 : module conv_interleaving(input Din, : input CLK, : output reg Dout); : ...................