跪求VHDL输出高阻态问题!在线等待
--2008-08-18:AM<br />library ieee;<br />use ieee.std_logic_1164.all;<br />use ieee.std_logic_unsigned.all;<br />ENTITY EXP02 IS<br /><br /> PORT<br /> (<br /> CLK : IN STD_LOGIC;<br /> RESET : IN STD_LOGIC;<br /> DERECTION : IN STD_LOGIC;<br /> CS1 : IN STD_LOGIC;<br /> CS2 : IN STD_LOGIC;<br /> WR : IN STD_LOGIC;<br /> DAT8 : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0)<br /> <br /> );<br />END EXP02;<br />ARCHITECTURE A OF EXP02 IS<br /> SIGNAL CONT14: STD_LOGIC_VECTOR(13 DOWNTO 0);<br /> <br /> <br />BEGIN<br />CONT:Process (CLK,RESET,DERECTION) --可逆计数器<br /> begin<br /> if RESET='0' then<br /> CONT14<=(others=>'0');<br /> elsif clk'event and clk='1' then<br /> if DERECTION='1' then<br /> CONT14<=CONT14+1;<br /> elsif DERECTION='0' then<br /> CONT14<=CONT14-1;<br /> end if;<br /> end if;<br /> end Process CONT ;<br /> <br />LD:Process (CS1,CS2,WR) --可逆计数器<br /> begin<br /> if WR'event and WR='0' then<br /> if CS1='0' and CS2='1' then<br /> DAT8<=CONT14(7 DOWNTO 0);<br /> elsif CS1='1' and CS2='0' then <br /> DAT8(5 DOWNTO 0)<=CONT14(13 DOWNTO 8);<br /> --else <br /> --DAT8<="ZZZZZZZZ";<br /> end if;<br /> end if;<br /> end Process LD ;<br />END A<br /><br />要是取消下面两行就通不过编译,郁闷啊!<br /> --else <br /> --DAT8<="ZZZZZZZZ";<br />谁能帮帮我啊,在线等待~~~~~~~~~看不懂!!水平不行!!
但是程序里的——是注释不会编译的!111
LZ如果不想要这两句话
LZ如果不想要这两句话, 可以把DAT8声明为OUTPUT,<br /> 如:<br /> module expo2 (cs0, cs1, wr,clk, reset, dat8);<br /><br /> output dat8;<br /><br /> reg dat8;我的经验
对INOUT最好定义一个明确的方向控制信号.例如定义一个SIGNAL DOE.另外定义一个DAT8的输出状态变量,例如DAT8_OUT.<br /><br />在所有处理中,DAT8用于输入,DAT8_OUT用于输出.<br /><br />然后在PROCESS外面<br /> DAT8<=DAT8_OUT WHEN DOE='1' ELSE "ZZZZZZZZ";<br /><br />这样做的好处一是程序条例清楚,二是很多编译器不是很完善,老是出现各种各样的警告,这样的话就没那些烦人的警告了.在ISE 10.1中没有问题
我试过了,在ISE10.1的版本中通过,不知道你用什么编译器!<br />当然你的代码的确是有点不敢恭维了,如果你做inout用强烈建议只对其进行一个赋值描述,同时在<br /> if CS1='0' and CS2='1' then<br /> DAT8<=CONT14(7 DOWNTO 0);<br /> elsif CS1='1' and CS2='0' then <br /> DAT8(5 DOWNTO 0)<=CONT14(13 DOWNTO 8);<br /> --else <br /> --DAT8<="ZZZZZZZZ";<br /> end if;<br />中需要对DAT8(6)进行操作,这样的话综合器才能最好的理解你的意思。靠别人不如靠自己
引用一句话:不要动不动就在网络上跪求跪求? 人要有尊严,在网络面前也不能把尊严丢了。<br /><br /> baidu,google都是很好的搜索工具,好好利用,不要一过来就求,谁吃饱了专门给你写个程序,帮你看个程序的。大家都很忙!<br />看看
说说自己的看法哈<br />在你的程序设计中,作为INOUT类型的引脚,在输入的时候是可以不加限制的,作为输出的时候,在默认或者是无输出的情况下,要做高阻输出,这样才不会影响你的总线状态<br /><br />也就是你的else dat8<=zzzzz是必不可少的<br />或者看你的代码直接定义为输出类型就好的了 haoren 发表于 2008-8-22 23:23我试过了,在ISE10.1的版本中通过,不知道你用什么编译器!当然你的代码的确是有点不敢恭维了,如果你做ino ...
好久没来了,太久没弄VHDL了{:shy:}
页:
[1]