双向既做输入又做输出的FPGA管脚.docx_第1页
双向既做输入又做输出的FPGA管脚.docx_第2页
双向既做输入又做输出的FPGA管脚.docx_第3页
双向既做输入又做输出的FPGA管脚.docx_第4页
双向既做输入又做输出的FPGA管脚.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

双向信号既做输出又做输出 - FPGA双向电路设计经验导读2)双向信号既做输出又做输出 上例是最简单的双向信号应用的特例.在实际的工程中,双向信号既做信号的输入,又做信号的输出,常见的数据总线就是这种操作在工程应用中,双向电路是设计者不得不面对的问题.在实际应用中,数据总线往往是双向的.如何正确处理数据总线是进行时序逻辑电路设计的基础.在程序设计过程中,关键技术在于:实体部分必须对端口属性进行申明,端口属性必须为Inout类型,在构造体需要对输出信号进行有条件的高阻控制.在双向电路的处理问题上,常用的处理方式有两种,在介绍双向电路的处理方式之前,先看看双向电路的基本格式:ENTITY Bidir_pin IS(Bidir : INOUT Std_logic;Oe, Clk, From_core : IN Std_logic;To_core : OUT Std_logic;END Bidir_pin;ARCHITECTURE Behavior OF Bidir_pin ISBEGINBidir = From_core WHEN Oe=1 ELSE “ZZZZ”;To_core = Bidir;_END Behavior;该程序揭示了双向电路的处理技巧,首先在实体部分Bidir属于双向信号,在端口定义时,端口属性为Inout类型,即把Bidir信号作为输入三态输出. 语句“Bidir = From_core WHEN Oe=1 ELSE “ZZZZ”;”表示Bidir信号三态输出,语句”To_core = Bidir;”把Bidir信号作为输入信号.由此可见,双向电路在程序设计中,Didir输入当着普通的In类型,而在输出时,需要加一定的控制条件,三态输出.问题的关键在于:如何确定这个条件?1)双向信号作一个信号的输入,作另一信号的输出ENTITY Bidir ISPORT(Bidir : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);Oe, Clk : IN STD_LOGIC;From_core : IN STD_LOGIC_VECTOR (7 DOWNTO 0);To_core : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END Bidir;ARCHITECTURE Logic OF Bidir ISSIGNAL A : STD_LOGIC_VECTOR (7 DOWNTO 0);SIGNAL B : STD_LOGIC_VECTOR (7 DOWNTO 0);BEGINPROCESS (Clk)BEGINIF Clk = 1 AND ClkEVENT THENA = From_core;To_core = B;END IF;END PROCESS;PROCESS (Oe, Bidir)BEGINIF( Oe = 0) THENBidir = ZZZZZZZZ;B = Bidir;ELSEBidir = A;B = Bidir;END IF;END PROCESS;END Logic;这种设计方式叫做寄存双向信号的方法.本设计中Bidir为双向信号,From_core为数据输入端,To_core为数据输出端,Oe为三态输出使能,Clk为读写数据的时钟.在程序设计中,需要定义两个Signal A和B信号.A信号用于输入数据From_core的寄存器,B用于输出数据To_core的寄存器.采用寄存器的方法需要设计两个进程,一个进程把A, B信号在时钟的控制下负责端口的输入信号From_core和端口输出信号To_core的连接,这一步实现了寄存双向的功能.另外一个进程则负责信号 A,B和双向口之间的赋值关系.本设计只揭示了简单的双向信号操作方式,即Bidir既可以作为From_core的输出,又可以作为To_core的输入2)双向信号既做输出又做输出上例是最简单的双向信号应用的特例.在实际的工程中,双向信号既做信号的输入,又做信号的输出,常见的数据总线就是这种操作模式.Library IEEE;Use IEEE.STD_LOGIC_1164.All;Entity Dir_data IsPort(Clk : In STD_LOGIC;Rst : In STD_LOGIC;Rw : In STD_LOGIC;Address : In STD_LOGIC_VECTOR(1 Downto 0);Data : Inout STD_LOGIC_VECTOR(7 Downto 0);End Dir_data;Architecture Arc_dir Of Dir_data IsSignal Data_in : STD_LOGIC_VECTOR(7 Downto 0);Signal Data_out: STD_LOGIC_VECTOR(7 Downto 0);Signal Reg_a: STD_LOGIC_VECTOR(7 Downto 0);Signal Reg_b: STD_LOGIC_VECTOR(7 Downto 0);BeginData_in=Data;D1:Process(Clk,Rst,Rw)BeginIf Rst=1 ThenReg_a0);Reg_b0);Elsif ClkEvent And Clk=1 ThenIf Rw=1 ThenIf Address=00 ThenReg_a=Data_in;Elsif Address=01 ThenReg_b=Data_in;Else Null;End If;Else Null;End If;Else Null;End If;End Process D1;D2:Process(Clk,Rw,Reg_a,Reg_b)BeginIf ClkEvent And Clk=1 ThenIf Rw=0 ThenIf Address=00 ThenData_out=Reg_a;Elsif Address=01 ThenData_out=Reg_b;Else Null;End If;Else Null;End If;Else Null;End If;End Process D2;DataZ);End Arc_dir;在程序设计中,首先需要定义Data_in, Data_out, Reg_a, Reg_b四个Signal,我们把Data_in叫做输入寄存器,它是从双向信号Data接收数据的寄存器,Data_out叫做输出寄存器,它是向双向信号Data发送信号的寄存器,Reg_a和Reg_b叫做操作寄存器,它们是在一定的时序控制下把Data_in数据送给Reg_a,Reg_b,在一定的时序控制下从Reg_a和Reg_b读出数据的.这样的处理方式必须有两个进程,因为在Architecture Arc_dir Of Dir_data Is和Begin之间定义了Data_in, Data_out, Reg_a, Reg_b四个Signal,它在同一进程内不支持既赋值,又调用,也就是说它不支持在D1进程中对信号Reg_a, Reg_b赋值,又在D1进程中又调用Reg_a, Reg_b.首先有语句”Data_in=Data;”它表示输入寄存器无条件的接收双先信号的数据.在D1进程中,首先在Rst信号有效时,对操作寄存器Reg_a,和Reg_b进行清零操作,然后在时钟(Clk)的控制下,在写 (Rw)信号有效的情况下,对Reg_a, Reg_b寄存器在不同的地址控制下写入不同的Data_in值.在D2进程中,在时钟(Clk)的控制下,在读(Rw)信号有效的时候,把不同地址的 Reg_a, Reg_b的值送进Data_out中.最关键的是最后一句:“DataZ);”它表示双向信号的三态输出,而最最关键的是When后面的条件,如果条件限制太宽,就会错误占用双向信号总线,引起总线的误操作,如果条件限制太窄,输出寄存器的数据就不能够正确的送到数据总线上去,会引起数据的丢失.也就是说,只有正确的限制了When语句后面的条件,才能够把输出寄存器的数据正确地送到数据总线上去.仔细查看此条件,有如下的规律:When语句后的条件是操作寄存器写入输出寄存器的条件的公共条件.比如:Rw=0是操作寄存器的数据写入输出寄存器的读使能信号,Address(1)是地址线的公共部分.在实际工程应用中,需要设计者在分配地址总线的时候掌握一定的技巧,尽量从地址的低位到到高位,保证地址总线有更多位的公共部分,比如只对四个寄存器操作时,地址线分配为”100”,” 010”,”110”,”001”是不科学的,而”000”,”001”,”010”和”011”则是理想的.两者不同的是前者地址线没有公共部分,这样的设计无法用When语句对条件进行直接的控制,如果置之不理,由于列举不全,在逻辑综合时,电路会利用器件的乘积项和查找表的资源形成一个Latc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论