微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > iic的测试代码仿真时卡住。用不了

iic的测试代码仿真时卡住。用不了

时间:10-02 整理:3721RD 点击:
求助啊!我写的激励代码不知道出什么bug了。在quartus编译成功。在modelsim编译成功,但加载波形,点了run之后就卡住。换了别人电脑也一样。其中:sw1,sw2是读写按键。在iic代码里面按下低电平有效。
大家帮忙看看是哪里出问题了。谢谢!
`timescale  1ns/100ps
module test;
reg clk,rst_n;
reg sw1,sw2;
reg sda_in;
wire sda;
iic_top iic1(
clk,rst_n,
sw1,sw2,
scl,sda,
sm_cs1_n,sm_cs2_n,sm_db
);
initial
begin
clk<=1'b0;
rst_n<=1'b0;
sw1<=1'b1;
sw2<=1'b1;
end
always
begin
#5 clk=~clk;
end
initial
begin
#1
rst_n<=1'b1;
sw1<=1'b0;
#1000
sw1<=1'b1;
sw2<=1'b0;
#2000
sw2<=1'b1;
#2000
$stop;
end

always begin
if(!sw2)
sda_in<= sda;
end
endmodule



   这里面还有很多问题啊,有时候不报错并不一定是对的,你还得检查warning,看是不是一些有用的信号也被综合了。这里面,一是例化iic_top的时候语法错误,信号并没有连接上,例化连接信号是像这样 .xx (xxx),。
二是这里面信号没有全部激励,请问SCL是谁产生的?
这些问题很初级,希望在debug的时候能够找准方法。



   scl是clk的2分频,错开一个相位方法是always @(posedge clk or  negedge rst_n)
begin
if(!rst_n)
scl=0;
else  scl=~scl;
end
然后例化不是可以顺序连接端口么,不用.***(***)
我是想问问谁知道我仿真时卡住了。居然一点没动静。好歹有stop命令啊。



   那你试试$finish。

Nothing happened/.....

`timescale  ?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top