这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 双向口信号如何仿真?

共5条 1/1 1 跳转至

双向口信号如何仿真?

工程师
2009-11-16 16:46:21     打赏
我的一个接口程序用到双向口,设为DD,在底层模块使用时用的是三个信号ddi、ddo和oe,在顶层时将这三个信号组合形成三态口:
DD<=ddo when (oe='1') else (others =>'Z');
ddi<=DD;
现在我要仿真顶层模块,一些状态的转换是需要这个双向口控制的,在testbench中应该如何来描述这个信号,才能让我既看到DD作为输出时的信号波形,又可以编辑DD作为输入时的波形以便做正确的状态转换?



关键词: 双向     信号     如何     仿真    

高工
2009-11-16 18:03:47     打赏
2楼
可以参考一下我以前发的帖子,应该可以解决你的问题了
http://forum.eepw.com.cn/thread/148560/1
如果还不行,再探讨

高工
2009-11-16 18:08:50     打赏
3楼
我的那篇帖子是将Verilog的。
还可以参考一下前任版主叮叮当当的帖子http://forum.eepw.com.cn/thread/107816/1

工程师
2009-11-18 09:22:09     打赏
4楼
叮叮当当那篇帖子感觉也没讲太清楚,您的那篇讲双向口的部分很少,也没看懂。我现在的理解是,是否应该把方向控制信号oe定义为输出,testbench中,DD的激励由oe的输出响应来产生。
先将双向口的描述用verlog再写下:
  assign DD = oe? ddo : 16’bz;
  assign ddi = DD; 
testbench是否可以这样描述:
`timescale 1ns / 1ps
initial
 begin
    #100;
  if (oe)   // oe为1时是向双向口写数据,在底层时可编辑ddo波形,
                      //在顶层ddo为内部信号,此时直接给DD赋值
   DD=16'd1;
  #200;
 if (oe)
   DD=16'd5;
 end
......
verlog刚学,请指教。我现在还在用vhdl,版主可用verlog指点,我基本能看懂,再自己翻译成VHDL,谢谢!


高工
2009-11-18 10:18:41     打赏
5楼
一般情况下,如果你所要描述的器件是个总线从设备,那么oe应该是个输入,由Testbench产生oe。正如由CPU控制RAM的读写一样。

这正好和你的描述是相反的。

assign DD = oe? ddo : 16’bz; 
assign ddi = DD; 

testbench:
`timescale 1ns / 1ps
initial
 begin
    #100;
  oe = 1;
#20;
testReg = DD;
#100;
oe = 0;
#10;
DD = 16'd1;
  #200;

 end
......

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]