微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > 如何仿真开漏(Open Drain)IO口

如何仿真开漏(Open Drain)IO口

时间:10-02 整理:3721RD 点击:

如图所示的I2C协议中SDA实际电路:


像这种带OPEN-Drain MOS及上拉电阻在纯verilog中仿真比较难搞,特别是同一总线连接多个器件的情况,但是可以近似处理

  1. //----for synthesizable block---//
  2. inout SDA;

  3. wire sdai,sdao,tri_sda;

  4. assign sdai=tri_sda?SDA:1'b0;
  5. assign SDA=sdao?1'bz:1'b0;

  6. //---------for testbench---------//
  7. inout SDA;

  8. wire RX;
  9. reg EN,TX;

  10. assign SDA=EN?TX:1'bz;
  11. assign RX=SDA;
  12. pullup pu(SDA);

复制代码


不过这种近似还是不够准确,根据HDL标准,可以使用wire AND 线网

  1. //---综合电路中--
  2. inout SDA;

  3. wand SDA;

  4. assign SDAI=tri_sda?SDA:0;
  5. assign SDA=SDAO;

  6. //--testbench----
  7. inout SDA;
  8. wire RX;
  9. reg EN,TX;

  10. assign SDA=EN?TX:1'bz;
  11. assign RX=SDA;

复制代码


此方式定义在仿真中只要有一边定义了wand线名,双向口就可以完全模拟如图所示的功能

请问什么是open-drain mos

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

网站地图

Top