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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: weizhiheng

[原创] 9页pdf多彩图深刻讲述三态门原理 verilog 和 VHDL的inout双向端口仿真

[复制链接]
发表于 2010-4-16 19:03:40 | 显示全部楼层
支持顶!
发表于 2010-4-16 23:29:48 | 显示全部楼层
有点意思 有点感觉
发表于 2010-4-17 00:21:05 | 显示全部楼层
还是要支持一下原创八,呵呵
发表于 2010-4-17 10:17:51 | 显示全部楼层
good~~~~~~~
发表于 2010-4-17 10:26:09 | 显示全部楼层
谢谢楼主分享
 楼主| 发表于 2010-4-17 22:54:39 | 显示全部楼层
本帖最后由 weizhiheng 于 2010-4-17 23:07 编辑

对 ve8736

module lpcbus(clk,ADDR,DATA,nOE,nWE,nCS,led);
   input clk,nOE,nWE,nCS;
   output led;
   input [7:0]ADDR;
   inout [15:0]DATA;
   reg [15:0]DATAOUT;
   wire link_bus;
   assign link_bus=!nOE;

  assign DATA=(link_bus)?DATAOUT:16'hzzzz;
   //---------------------
   //assign DATA=DATAOUT;
   //---------------------
   reg [25:0]cnt;
   always@(posedge clk) begin
    cnt<=cnt+1;
   end
   
   
   assign led=cnt[25];
   reg [15:0]ram,ram2;
   
   always@(nWE or nCS or ADDR) begin
    if((nCS==0)&&(nWE==0)) begin
     case(ADDR)
      16'h55: begin ram<=DATA; end
      16'h77: begin ram2<=DATA; end
      default:begin end
     endcase
    end
   end
   
   
   always@(nOE or nCS or ADDR) begin
    if((nCS==0)&&(nOE==0)) begin
     case(ADDR)
      16'h66: begin DATAOUT<=ram; end
      16'h88: begin DATAOUT<=ram2; end
      default: begin end
     endcase
    end
    else begin
     DATAOUT<=16'hzzzz;
    end
   end
endmodule
 楼主| 发表于 2010-4-17 22:56:59 | 显示全部楼层
本帖最后由 weizhiheng 于 2010-4-18 08:53 编辑

引用:----------------------------------------
我这两天用verilog编的ARM7与CPLD总线连接的程序,编完后用Jlink查看过ARM收发的数据,总线是好使的,就是说源模块代码没问题。现在问题就出在编写testbench仿真总线inout口,能看到测试模块给源模块的总线输入数据,但是看不到总线输出数据。在网上找了下资料,发现有建议用"assign DATA = (~nWE)?treg_DATA:16'hzzzz;assign DATA_OUT=(~nOE)?DATA:16'hzzzz;"这种方式,通过treg_DATA输入数据,DATA_OUT观察输出数据,但是试验了发现不行,总线输出仍然是高阻态。后来在weizhiheng的这个帖子http://www.eetop.cn/bbs/thread-245831-1-1.html里找到另外一种方法,像这样reg [3:0] dirdata$inout$reg = 4'b0000;wire [3:0] dirdata = dirdata$inout$reg; ,通过dirdata 观察输出,但是发现也不行。所以只能上网求助大家了。我先粘贴源模块代码:
---------------------------------------------------------------------
然后我按照weizhiheng的方式改了下测试代码:

`timescale 1 ns/ 1 ns
module lpcbus_vlg_tst;
reg [7:0] ADDR;
reg clk;
reg nCS;
reg nOE;
reg nWE;
                                    
reg [15:0] DATA$inout$reg = 16'h0000;
wire [15:0] DATA = DATA$inout$reg;
wire led;
                  
initial begin
clk=0; nWE=1; nOE=1; nCS=1;
end                                                
                                                
always #10 clk=~clk;
always begin
#50 ADDR=8'h55;DATA$inout$reg=16'h1234; nWE=0; nCS=0;  
#50 nWE=1; nCS=1; DATA$inout$reg=16'hzzzz;
#50 ADDR=8'h66; nOE=0; nCS=0;
#50 nOE=1; nCS=1;
#50 ;                                       
end            
lpcbus i1 (
.ADDR(ADDR),
.DATA(DATA),
.clk(clk),
.led(led),
.nCS(nCS),
.nOE(nOE),
.nWE(nWE)
);                    
endmodule


weizhiheng:上述的源码和testbench都没有错误,本人的仿真结果如下图。
这一个是ARM的总线,欢迎大家学习,再一次 加深对三态总线仿真的学习!
ssss.jpg
 楼主| 发表于 2010-4-17 23:10:29 | 显示全部楼层
热烈欢迎大家使用我的文档!

自认为比较有讲课的特长,呵呵:)

家里穷,大学和研究生时做了6年的家教………………………………

做事情,贵在自己能够感动自己。很多事情,如果做到可以感动自己的份上,离成功肯定不远了。
发表于 2010-4-18 09:51:17 | 显示全部楼层
顶一个~~
发表于 2010-4-18 11:25:22 | 显示全部楼层
下来看看,正在找
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-26 04:19 , Processed in 0.022287 second(s), 6 queries , Gzip On, Redis On.

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