在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: alice_xx14

[求助] Xilinx Spartan6 block ram调用问题

[复制链接]
 楼主| 发表于 2013-11-25 17:41:16 | 显示全部楼层
回复 9# eaglelsb

非常感谢你。不好意思啊,我又遇到一个新问题,程序在modelsim上仿真没有问题,但是转到ISE上就报错,错误和代码如下,我实在不太明白是什么问题,麻烦你给看看。
  
ERROR:HDLCompiler:1128 - "D:\EDK_project\MDIO_Communication\flash_controller.v" Line 329: Assignment under multiple single edges is not supported for synthesis
INFO - You can change the severity of this error message to warning using switch -change_error_to_warning "HDLCompiler:1128"
Module flash_controller remains a blackbox, due to errors in its contents  


  always@(posedge sclk or posedge reset)
  begin
    if((delay_count_page>=4)&&(delay_count_page<=259)&&(~delay_count_page%2)&&read_en)
      begin
        case(delay_count_byte)
          4'd1:data[7]<=miso;
          4'd2:data[6]<=miso;
          4'd3:data[5]<=miso;
          4'd4:data[4]<=miso;
          4'd5:data[3]<=miso;
          4'd6:data[2]<=miso;
          4'd7:data[1]<=miso;
          4'd8:data[0]<=miso;
          default: data<=0;  
        endcase
      end
    else if((delay_count_page>=4)&&(delay_count_page<=259)&&(delay_count_page%2)&&read_en)
      begin
        case(delay_count_byte)
          4'd1:data[15]<=miso;
          4'd2:data[14]<=miso;
          4'd3:data[13]<=miso;
          4'd4:data[12]<=miso;
          4'd5:data[11]<=miso;
          4'd6:data[10]<=miso;
          4'd7:data[9]<=miso;
          4'd8:data[8]<=miso;
          default: data<=0;  
        endcase
      end
    else if((delay_count_page>=3)&&program_enable)
      begin
        if(delay_count_page>=3&&delay_count_page<=258&&(delay_count_page%2))
          begin
            if (delay_count_byte==8)
              data<=dob;
          end
      end
    else
      data<=16'd0;
   end
 楼主| 发表于 2013-11-25 18:09:56 | 显示全部楼层
回复 11# alice_xx14


   //----------------------------------------------------  //store miso to data& get data from dob
  always@(posedge sclk)
  begin
    if(read_en)
      begin
        if((delay_count_page>=4)&&(delay_count_page<=259))
          begin
            if(~delay_count_page%2)
              begin
                case(delay_count_byte)
                  4'd1:data[7]<=miso;
                  4'd2:data[6]<=miso;
                  4'd3:data[5]<=miso;
                  4'd4:data[4]<=miso;
                  4'd5:data[3]<=miso;
                  4'd6:data[2]<=miso;
                  4'd7:data[1]<=miso;
                  4'd8:data[0]<=miso;
                  default: data<=0;  
                endcase
              end
            else if (delay_count_page%2)
              begin
                case(delay_count_byte)
                  4'd1:data[15]<=miso;
                  4'd2:data[14]<=miso;
                  4'd3:data[13]<=miso;
                  4'd4:data[12]<=miso;
                  4'd5:data[11]<=miso;
                  4'd6:data[10]<=miso;
                  4'd7:data[9]<=miso;
                  4'd8:data[8]<=miso;
                  default: data<=0;  
                endcase
              end
          end
      end
    else if(program_enable)
      begin
        if(delay_count_page>=3&&delay_count_page<=258&&(delay_count_page%2))
          begin
            if (delay_count_byte==8)
              data<=dob;
          end
      end
    else
      data<=0;
  end

我改了一下 好像可以了。。。
 楼主| 发表于 2013-11-26 14:23:57 | 显示全部楼层
回复 9# eaglelsb


WARNING:Xst:2042 -    Unit top: 44 internal tristates are replaced by logic (pull-up yes):
这个warning是什么意思呢?
发表于 2013-11-27 11:00:40 | 显示全部楼层
回复 11# alice_xx14

注意查看错误提示,一般会告诉你在哪里支找原因。Assignment under multiple single edges is not supported
再看你代码,哪里与edge有关的? (posedge sclk or posedge reset)
我们通常用是这么用,
always @ (posedge clk or posedge reset)
if (reset == 1'b1)
....
else


就是reset作为复位信号,你的代码没有下面的reset部分,代码就会认为这是个clock采样,变为多时钟采同一个数据,所以报错了。
发表于 2013-11-27 11:01:56 | 显示全部楼层
回复 13# alice_xx14

这错误提示说得很清楚啊,还不清楚自己google
 楼主| 发表于 2013-12-3 17:58:25 | 显示全部楼层
回复 15# eaglelsb

是用条件划分状态机比较好 还是一个状态机内部划分条件比较好
通俗来说就是两个个if 是分为状态机好,还是在一个状态机内依次if好
发表于 2014-9-4 19:08:18 | 显示全部楼层
顶顶顶顶顶
发表于 2014-9-4 19:45:45 | 显示全部楼层
回复 10# alice_xx14


一般这种情况是你的代码里面有不可综合的语句
发表于 2014-11-10 21:38:58 | 显示全部楼层
一般这种情况是你的代码里面有不可综合的语句
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-15 14:02 , Processed in 0.020356 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表