搜索
bottom↓
回复: 11

新手请教inout类型仿真结果全是XXX问题

[复制链接]

出0入0汤圆

发表于 2010-6-23 10:38:20 | 显示全部楼层 |阅读模式
刚接触FPGA,学习inout类型,写了存储器小程序仿真,可是全是XXX,请大家赐教...
储存器代码如下:
module myRAM(IN,OUT,EN,DATA,ADDR);
  input IN,OUT,EN;
  input [7:0] ADDR;
  inout [7:0] DATA;
  reg [7:0] DATABUF;
  reg [7:0] MEM[255:0];
  wire [7:0] DATA;
  
  assign DATA = DATABUF;
  always @(posedge IN or posedge OUT)
  begin
    if(!EN)
      DATABUF = 8'bzzzzzzzz;
    else
      if((IN==1)&&(OUT==0))
        MEM[ADDR] = DATA;
      else
        if((IN==0)&&(OUT==1))
          DATABUF = MEM[ADDR];
        else
          DATABUF = 8'bzzzzzzzz;     
  end
endmodule
测试代码如下:
`timescale 1ns/1ns
`include "myRAM.v"
module myRAM_TB;
  reg in_ctr,out_ctr,en_ctr;
  reg [7:0] addr_bus,data_buf;
  wire [7:0] data_bus;
  integer i;
  
  myRAM mytest(.IN(in_ctr),.OUT(out_ctr),.EN(en_ctr),.DATA(data_bus),.ADDR(addr_bus));
  assign data_bus = data_buf;
  
  initial
  begin
    en_ctr = 0;
    #50 en_ctr = 1;
    out_ctr = 0;
    for(i=0;i<256;i=i+1)
    begin
      #10 in_ctr = 0;
      addr_bus = i;
      data_buf = i;
      #10 in_ctr = 1;
    end
   
    i = 0;
    in_ctr = 0;
    while(1)
    begin
      #10 out_ctr = 0;
      addr_bus = i;
      #10 out_ctr = 1;
      i = i + 1;
    end
  end
endmodule

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2010-6-23 10:46:09 | 显示全部楼层

(原文件名:QQ截图未命名2.png)

出0入0汤圆

 楼主| 发表于 2010-6-23 10:46:54 | 显示全部楼层

(原文件名:QQ截图未命名.png)

出0入0汤圆

 楼主| 发表于 2010-6-24 19:54:46 | 显示全部楼层
顶啊,走过路过的朋友,看看怎么回事啊?坛子里类似的问题都没个结果,希望能顶出个结果来!

出0入0汤圆

发表于 2010-6-25 15:57:25 | 显示全部楼层
三态信号要声明成上拉。

出0入0汤圆

 楼主| 发表于 2010-6-28 20:29:23 | 显示全部楼层
回复【4楼】ngzhang 兽哥
-----------------------------------------------------------------------

谢谢 ngzhang 兽哥,我修改了下程序,输入正常了,输出还是不对...低电平是X,高电平是1,不知道怎么回事....

出0入0汤圆

 楼主| 发表于 2010-6-28 20:30:00 | 显示全部楼层
module myRAM(IN,OUT,EN,DATA,ADDR);
  input IN,OUT,EN;
  input [7:0] ADDR;
  inout [7:0] DATA;
  reg [7:0] DATABUF;
  reg [7:0] MEM[255:0];
  tri1 [7:0] DATA;
  
  assign DATA = ((OUT==1)&&(IN==0))?DATABUF:8'bzzzzzzzz;

  always @(posedge EN)
  begin
    if((IN==1)&&(OUT==0))
      MEM[ADDR] = DATA;
    else
      if((OUT==1)&&(IN==0))
        DATABUF = MEM[ADDR];
      else
        DATABUF = 8'b0;
  end
endmodule

出0入0汤圆

 楼主| 发表于 2010-6-28 20:33:02 | 显示全部楼层

(原文件名:波形.JPG)

出0入0汤圆

发表于 2010-6-28 20:41:05 | 显示全部楼层
好像还有信号驱动强度的问题,搜索一下。具体的我忘了。

出0入0汤圆

 楼主| 发表于 2010-6-28 20:58:17 | 显示全部楼层
回复【8楼】ngzhang 兽哥
-----------------------------------------------------------------------
谢谢!主要是没这方面的例程,现在完全是照着书本,加上自己的想象乱搞modelsim...,等几天买个板子回来看看有例程没,搞定的话把结果发上来

出0入0汤圆

发表于 2012-6-27 18:10:52 | 显示全部楼层
楼主最后怎么解决的呢 我的是0 是对  1全是x

出0入442汤圆

发表于 2012-6-27 19:31:06 | 显示全部楼层
inout在写TB时会自动生成wire线,必须手工指定三态或EN。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 09:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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