目录

一、序言

二、IOBUF 例化

三、IOBUF verilog实现

四、IOBUF 综合结果


一、序言

        在verilog设计中,通常端口使用更多的申明为input,output,即输入到FPGA内部,以及FPGA输出到外部,都是单向传输,对于双向传输的场景需要使用到inout类型。

二、IOBUF 例化

        在xilinx中例化使用双向端口是使用IOBUF,IOBUF定义如下,可看到有四个pin,O、I、IO、T,其中T为控制端口,控制IO为输入或输出

   IOBUF #(
      .IS_CCIO("FALSE") 
   )
   IOBUF_inst (
      .O(O),   // 1-bit output: Buffer output
      .I(I),   // 1-bit input: Buffer input
      .IO(IO), // 1-bit inout: Buffer inout (connect directly to top-level port)
      .T(T)    // 1-bit input: 3-state enable input
   );

三、IOBUF verilog实现

 module iobuf
 2     (   inout   io,
 4         input   t,
 5         input   in,    
 6         output  out);
 8 
 9     assign out=t?io:in;        
10     assign io=~t?in:1'bz;
11     
12 endmodule

四、IOBUF 综合结果

在vivado查看Synthesize后的模型,如下图,其中io是直接连接到IOBUF_inst的pin:IO上,因为为双向传输的,中间未插入IBUF或OBUF。

关键点理解,io端口为直接连接FPGA与外部芯片。通过verilog实现代码可看出,对于t信号为1时,输出o=io,此时即外部信号通过io端口输入到FPGA内部,对于t信号为0时,io=in,即FPGA内部信号通过io端口。因此,通过控制信号t控制io端口的数据流向

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐