来源: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