集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1843|回复: 3

寄存器寻址问题,各位进来看看

[复制链接]
zhshqh 发表于 2011-12-12 16:12:59 | 显示全部楼层 |阅读模式
本帖最后由 zhshqh 于 2011-12-13 09:10 编辑

刚开始学verilog,在实践中发现一个现象如下代码所示:

module SWITCH_module(
                                       output reg [63:0] TDM_out,
                                       input CLK8M,
                                       input [2:0] TS_BIT_position,
                                       input [7:0] TDM_in
                                      );

    integer i;

always @(negedge CLK8M)
begin                                                                   
        case(TS_BIT_position)
3'b000  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8] <= TDM_in;
3'b001  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 1] <= TDM_in;
3'b010  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 2] <= TDM_in;
3'b011  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 3] <= TDM_in;
3'b100  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 4] <= TDM_in;
3'b101  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 5] <= TDM_in;
3'b110  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 6] <= TDM_in;       
default  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 7] <= TDM_in;               
                endcase          
end       
endmodule

上面的代码是我想实现的意图,也达到了我想实现的意图,但当我想把其中的CASE语句简写为如下形式时

           for(i = 0; i <= 7; i = i + 1)               
                TDM_out[i*8 + TS_BIT_position] <= TDM_in;

综合出来的结果只有TDM_out[15:0]是和上面相同的,后面的TDM_out[63:16]就不是我想要达到的目的了,请问各位高手,上面这个语句有什么不符合的语法,或者综合器理解不了的问题吗?
 楼主| zhshqh 发表于 2011-12-12 16:14:17 | 显示全部楼层
晕,排了半天版,看起来很整齐的啊,怎么出来这效果
 楼主| zhshqh 发表于 2011-12-13 09:12:00 | 显示全部楼层
各位给个意见呗
I2C 发表于 2011-12-13 10:27:02 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-5-18 19:46 , Processed in 0.076282 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表