关于inout类型数据testbench编写调试过程记录.docxVIP

关于inout类型数据testbench编写调试过程记录.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于inout类型数据testbench编写调试过程记录

我这两天用verilog编的ARM7与CPLD总线连接的程序,编完后用Jlink查看过ARM收发的数据,总线是好使的,就是说源模块代码没问题。现在问题就出在编写testbench仿真总线inout口,能看到测试模块给源模块的总线输入数据,但是看不到总线输出数据。在网上找了下资料,发现有建议用 assign DATA = (~nWE)?treg_DATA:16hzzzz; assign DATA_OUT=(~nOE)?DATA:16hzzzz; 这种方式,通过treg_DATA输入数据,DATA_OUT观察输出数据,但是试验了发现不行,总线输出仍然是高阻态。后来在weizhiheng的这个帖子  HYPERLINK /bbs/thread-245831-1-1.html \t /_blank /bbs/thread-245831-1-1.html 里找到另外一种方法,像这样 reg [3:0] dirdata$inout$reg = 4b0000; wire [3:0] dirdata = dirdata$inout$reg; 通过dirdata 观察输出,但是发现也不行。所以只能上网求助大家了。我先粘贴源模块代码:? module lpcbus(clk,ADDR,DATA,nOE,nWE,nCS,led); input clk,nOE,nWE,nCS; input [7:0] ADDR; inout [15:0] DATA; output led; reg [15:0]DATAOUT; wire link_bus; assign link_bus=!nOE; assign DATA=(link_bus)?DATAOUT:16hzzzz; 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) 16h55: begin ram=DATA; end 16h77: 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) 16h66: begin DATAOUT=ram; end 16h88: begin DATAOUT=ram2; end default: begin end endcase end else begin DATAOUT=16hzzzz; end end endmodule? 功能及其简单,就是往0X55写数时,能从0x66里读出来,是用来测试总线用的,试验结果验证好用。 下面是测试代码testbench和仿真波形图: ?`timescale 1 ns/ 1 ns module lpcbus_vlg_tst; reg [7:0] ADDR; reg [15:0] treg_DATA; reg clk; reg nCS; reg nOE; reg nWE; wire [15:0] DATA; wire [15:0] DATA_OUT; wire led; assign DATA = (~nWE)?treg_DATA:16hzzzz; assign DATA_OUT=(~nOE)?DATA:16hzzzz; initial begin clk=0; nWE=1; nOE=1; nCS=1; end always #10 clk=~clk; always begin #50 ADDR=8h55; treg_DATA=16h1234; nWE=0; nCS=0; #50 nWE=1; nCS=1; treg_DATA=16hzzzz; #50 ADDR=8h66; nOE=0; nCS=0; #50 nOE=1; nCS=1; #100 ; end lpcbus i1 ( .ADDR(ADDR), .DATA(DATA), .clk(clk), .led(led), .nCS(nCS), .nOE(nOE), .nWE(nWE) ); endmodule? 仿真波形如图所示:可以看到,第一种方式时总线输出为高阻态ZZZZ,见红线那部分INCLUDEPICTURE \d /attach

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档