跪求VHDL输出高阻态问题!在线等待

[复制链接]
 楼主| xiubing65 发表于 2008-8-19 10:10 | 显示全部楼层 |阅读模式
--2008-08-18:AM<br />library&nbsp;ieee;<br />use&nbsp;ieee.std_logic_1164.all;<br />use&nbsp;ieee.std_logic_unsigned.all;<br />ENTITY&nbsp;EXP02&nbsp;IS<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;PORT<br />&nbsp;&nbsp;&nbsp;&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;IN&nbsp;&nbsp;&nbsp;&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RESET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;IN&nbsp;&nbsp;&nbsp;&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DERECTION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;IN&nbsp;&nbsp;&nbsp;&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CS1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;IN&nbsp;&nbsp;&nbsp;&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CS2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;IN&nbsp;&nbsp;&nbsp;&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;IN&nbsp;&nbsp;&nbsp;&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAT8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;INOUT&nbsp;STD_LOGIC_VECTOR(7&nbsp;DOWNTO&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;);<br />END&nbsp;EXP02;<br />ARCHITECTURE&nbsp;A&nbsp;OF&nbsp;EXP02&nbsp;IS<br />&nbsp;&nbsp;&nbsp;&nbsp;SIGNAL&nbsp;CONT14:&nbsp;STD_LOGIC_VECTOR(13&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />BEGIN<br />CONT:Process&nbsp;(CLK,RESET,DERECTION)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--可逆计数器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;RESET='0'&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CONT14&lt=(others=&gt'0');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elsif&nbsp;clk'event&nbsp;and&nbsp;clk='1'&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;DERECTION='1'&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CONT14&lt=CONT14+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elsif&nbsp;DERECTION='0'&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CONT14&lt=CONT14-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if;<br />&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;Process&nbsp;CONT&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />LD:Process&nbsp;(CS1,CS2,WR)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--可逆计数器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;WR'event&nbsp;and&nbsp;WR='0'&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;CS1='0'&nbsp;and&nbsp;CS2='1'&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAT8&lt=CONT14(7&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elsif&nbsp;CS1='1'&nbsp;and&nbsp;CS2='0'&nbsp;then&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAT8(5&nbsp;DOWNTO&nbsp;0)&lt=CONT14(13&nbsp;DOWNTO&nbsp;8);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--DAT8&lt=&quot;ZZZZZZZZ&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if;<br />&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;Process&nbsp;LD&nbsp;;<br />END&nbsp;A<br /><br />要是取消下面两行就通不过编译,郁闷啊!<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--DAT8&lt=&quot;ZZZZZZZZ&quot;;<br />谁能帮帮我啊,在线等待~~~~~~~~~
putiandiao 发表于 2008-8-20 22:02 | 显示全部楼层

看不懂!!水平不行!!

但是程序里的——是注释不会编译的!
xusnwise 发表于 2008-8-21 16:26 | 显示全部楼层

111

  
xusnwise 发表于 2008-8-21 16:27 | 显示全部楼层

LZ如果不想要这两句话

LZ如果不想要这两句话,&nbsp;可以把DAT8声明为OUTPUT,<br />&nbsp;如:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;module&nbsp;&nbsp;expo2&nbsp;(cs0,&nbsp;cs1,&nbsp;wr,clk,&nbsp;reset,&nbsp;dat8);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;&nbsp;[7:0]&nbsp;dat8;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reg&nbsp;&nbsp;&nbsp;&nbsp;[7:0]&nbsp;&nbsp;dat8;
dragon_hn 发表于 2008-8-21 23:12 | 显示全部楼层

我的经验

对INOUT最好定义一个明确的方向控制信号.例如定义一个SIGNAL&nbsp;DOE.另外定义一个DAT8的输出状态变量,例如DAT8_OUT.<br /><br />在所有处理中,DAT8用于输入,DAT8_OUT用于输出.<br /><br />然后在PROCESS外面<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAT8&lt=DAT8_OUT&nbsp;WHEN&nbsp;DOE='1'&nbsp;ELSE&nbsp;&quot;ZZZZZZZZ&quot;;<br /><br />这样做的好处一是程序条例清楚,二是很多编译器不是很完善,老是出现各种各样的警告,这样的话就没那些烦人的警告了.
haoren 发表于 2008-8-22 23:23 | 显示全部楼层

在ISE 10.1中没有问题

我试过了,在ISE10.1的版本中通过,不知道你用什么编译器!<br />当然你的代码的确是有点不敢恭维了,如果你做inout用强烈建议只对其进行一个赋值描述,同时在<br />&nbsp;if&nbsp;CS1='0'&nbsp;and&nbsp;CS2='1'&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAT8&lt=CONT14(7&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elsif&nbsp;CS1='1'&nbsp;and&nbsp;CS2='0'&nbsp;then&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAT8(5&nbsp;DOWNTO&nbsp;0)&lt=CONT14(13&nbsp;DOWNTO&nbsp;8);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--DAT8&lt=&quot;ZZZZZZZZ&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if;<br />中需要对DAT8(6)进行操作,这样的话综合器才能最好的理解你的意思。
dynameo 发表于 2008-8-23 17:20 | 显示全部楼层

靠别人不如靠自己

&nbsp;&nbsp;&nbsp;&nbsp;引用一句话:不要动不动就在网络上跪求跪求?&nbsp;人要有尊严,在网络面前也不能把尊严丢了。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;baidu,google都是很好的搜索工具,好好利用,不要一过来就求,谁吃饱了专门给你写个程序,帮你看个程序的。大家都很忙!<br />
jiligo 发表于 2008-8-31 11:06 | 显示全部楼层

看看

说说自己的看法哈<br />在你的程序设计中,作为INOUT类型的引脚,在输入的时候是可以不加限制的,作为输出的时候,在默认或者是无输出的情况下,要做高阻输出,这样才不会影响你的总线状态<br /><br />也就是你的else&nbsp;dat8&lt=zzzzz是必不可少的<br />或者看你的代码直接定义为输出类型就好的了
 楼主| xiubing65 发表于 2020-11-24 19:23 | 显示全部楼层
haoren 发表于 2008-8-22 23:23
我试过了,在ISE10.1的版本中通过,不知道你用什么编译器!当然你的代码的确是有点不敢恭维了,如果你做ino ...

好久没来了,太久没弄VHDL了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

71

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部