• [转帖](原创) 深入探讨inout port (SOC) (Verilog) (VHDL) (Quartus II) (SignalTap II) (DE270)


    来源:http://www.cnblogs.com/oomusou/archive/2011/02/21/inout_port.html

    Abstract
    inout port在硬件是很特别的东西,本文从各种面象去讨论,包括如何用Verilog、VHDL撰写RTL? 如何用Verilog、VHDL写testbench做simulation,如何在SignalTap II去观察inout port?

    Introduction
    使用环境:Quartus II 8.1 + ModelSim SE 6.3e + Debussy 5.4 v9 + DE2-70 (EP2C70F896CN)

    本文将讨论以下主题:

    1.什么是inout port?

    2.最简单的inout port (FPGA/Schematic/Verilog/VHDL)

    3.如何用Vector Waveform File对inout port做simulation?

    4.如何使用testbench对inout port做simulation?

    5.如何在DE2-70使用inout port?

    6.如何使用SignalTap II on inout port?

    什么是inout port?

    就是1个port同时可以当input也可以当output,其实在我们生活中就存在这种东西,在每个台北捷运出口都会有个『双向门』,既可进也可以出,也就是可以『output』也可以『input』,这就是一个inout port。

     

    为什么捷运的inout port不会打架呢?只要一方要『output』时,就会拉起output enable,此时『input』就被挡住无法进入,反之,若要『input』时,则output enable反向拉起,此时『output』就被挡住无法出去。总之,就是靠一个『output enable』去做控制。

    电路上的inout port机制其实跟捷运的『双向门』几乎一样。

    最简单的inout port

     

    其中oe_i为input,控制tri-state gate,a_i为input,c_io为inout,可input也可output,b_o为output。

    当oe_i为high时,tri-state gate打通,此时c_io为output,a_i为input。

    当oe_i为low时,tri-state gate为high impedance,也就相当于tri-state gate断开,此时c_io为input,b_o为output。

    FPGA如何实现?

     

    根据[5] Cyclone II Device Family Datasheet,每个IOE如上图所示,若要以FPGA实现最简单的inout port,则如上图红线所示,即可使用FPGA实现之。

    使用Schematic File表示

     

    使用Verilog表示

    bidir_simple.v / Verilog

     1 /*
     2 (C) OOMusou 2011 http://oomusou.cnblogs.com
     3
     4 Filename    : bidir_simple.v
     5 Synthesizer : Quartus II 8.1
     6 Description : simple inout port in Verilog
     7 Release     : Mar.07,2011 1.0
     8  */
     9
    10 module bidir_simple (
    11   oe_i,
    12   a_i,
    13   b_o,
    14   c_io
    15 );
    16   
    17 input  oe_i;
    18 input  a_i;
    19 output b_o;
    20 inout  c_io;
    21
    22 assign c_io = (oe_i) ? a_i : 1'bz;
    23 assign b_o  = c_io;
    24
    25 endmodule

    原理图确定后,使用Verilog表示就很容易了,只是把图用Verilog表示。

    22行

    assign c_io = (oe_i) ? a_i : 1'bz;

    当inout当成output时,在Verilog中,tri-state gate是利用?:配合z来表示。

    23行

    assign b_o  = c_io;

    当inout当成input时,只需直接assign即可,不须在搭配?:。

    Summary

    当使用Verilog描述inout port时,RTL部分只需在inout当output时加上?:与Z,当input时直接assign即可。

    使用VHDL表示

    bidir_simple.vhd / VHDL

     

     

     

    Reference
    [1] 赤松子耶的博客, INOUT双向端口仿真 三态门构成 三态门原理 三态门仿真
    [2] 刘福奇 刘波 2009, Verilog HDL应用程序设计
    [3] FPGARelated.com, Bidirectional signals with Altera SignalTap II
    [4] 葛叶明, 彭永丰, 薛冰 2010, 零基础学FPGA  基于Altera FPGA器件&Verilog HDL语言, 机械工业出版社
    [5] Cyclone II Device Family Datasheet

    未完,待续。

    分类: DE2-70, Quartus II, SignalTap II, SOC, Verilog, VHDL

     

    http://blog.sina.com.cn/s/blog_66eaee8f0100hrjl.html

  • 相关阅读:
    JSON数据格式
    AJAX入门
    SpringMVC如何处理JSON数据和运行流程
    SpringMVC视图解析器与数据类型转换
    SpringMVC入门——基础知识
    SpringMVC自定义拦截器与异常处理
    SpringMVC实现文件的上传和下载
    Eclipse中安装Springtools插件的步骤
    SpringMVC实现员工信息的增删改查
    文件的上传与下载
  • 原文地址:https://www.cnblogs.com/zlh840/p/1982568.html
Copyright © 2020-2023  润新知