微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 用verilog写的三态门问题

用verilog写的三态门问题

时间:10-02 整理:3721RD 点击:
我写了一个普通的三态门,例化后在另外一个module调用它,再接一个反相器,综合之后出现WARNING:Xst:2041 - Unit challege: 1 internal tristate is replaced by logic (pull-up yes): in1。我电路中需要tristate保存下来,怎样解决?

你的程序可以贴出来啊

不知道啊

一般来讲,在芯片内部不支持使用三态门,只有在芯片与外设打交道时,才能使用三态门。不过据说Xinlinx的FPGA支持内部三态门,不过我没用过,其它的好像都不支持吧!


单独写的三态门:
module buffer(buf_in,buf_chs,buf_out);
input buf_in;
input buf_chs;
output buf_out;
assign buf_out=(buf_chs==0)?buf_in:2'bz;
endmodule
反相器:
module lut_inveter(LUT_IN,LUT_OUT);
input LUT_IN;
output LUT_OUT;
defparam U0.INIT=2'b01;
LUT1 U0(.O(LUT_OUT),.I0(LUT_IN));
endmodule
顶层模块:
module challege(in,chs,out);
input in;
input chs;
output out;
  buffer buff(.buf_in(in),.buf_chs(chs),.buf_out(in1));
  lut_inveter not1(.LUT_IN(in1),.LUT_OUT(out));
endmodule


如果是搭电路的话有几种三态门在元器件中。用verilog单独写三态门综合后看technology schematic时也有,就是把它例化时用在其他模块就被优化成逻辑单元了



    对的,FPGA内部的逻辑不支持三态这一操作的,因为每一个slice由 查找表和 寄存器构成,这根本不可能实现三态,
而在IO口中,是设置了三态结构。所以你这样不可能成功的。
你可以看看 slice的结构,以及IO的结构



    那个元器件库,一般在IO端口上使用的。内部基本上不会使用,实际上使用那个元器件也就是定义的线性结构和寄存器,同时连接到io端口上的。
前一段时间比较忙,就没有看帖子的,对不起啊

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

网站地图

Top