|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 quantumdot 于 2016-4-10 10:57 编辑
如图所示的I2C协议中SDA实际电路:
SDA driver
像这种带OPEN-Drain MOS及上拉电阻在纯verilog中仿真比较难搞,特别是同一总线连接多个器件的情况,但是可以近似处理
- //----for synthesizable block---//
- inout SDA;
- wire sdai,sdao,tri_sda;
- assign sdai=tri_sda?SDA:1'b0;
- assign SDA=sdao?1'bz:1'b0;
- //---------for testbench---------//
- inout SDA;
- wire RX;
- reg EN,TX;
- assign SDA=EN?TX:1'bz;
- assign RX=SDA;
- pullup pu(SDA);
复制代码
不过这种近似还是不够准确,根据HDL标准,可以使用wire AND 线网
- //---综合电路中--
- inout SDA;
- wand SDA;
- assign SDAI=tri_sda?SDA:0;
- assign SDA=SDAO;
- //--testbench----
- inout SDA;
- wire RX;
- reg EN,TX;
- assign SDA=EN?TX:1'bz;
- assign RX=SDA;
复制代码
此方式定义在仿真中只要有一边定义了wand线名,双向口就可以完全模拟如图所示的功能 |
|