VHDL编译成功,但做试验有问题,请大侠知道

[复制链接]
3088|6
 楼主| xubanghui 发表于 2007-7-14 07:47 | 显示全部楼层 |阅读模式
<br />&nbsp;--&nbsp;&nbsp;表示8位数值比较器&gt=DCH,输出=1<br />LIBRARY&nbsp;&nbsp;IEEE&nbsp;;<br />USE&nbsp;&nbsp;IEEE.STD_LOGIC_1164.ALL&nbsp;;<br />ENTITY&nbsp;&nbsp;comparator_bc&nbsp;&nbsp;IS&nbsp;<br />PORT&nbsp;(&nbsp;&nbsp;dataA&nbsp;&nbsp;:&nbsp;&nbsp;IN&nbsp;&nbsp;STD_LOGIC_VECTOR&nbsp;(&nbsp;7&nbsp;DOWNTO&nbsp;&nbsp;0&nbsp;)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rfmute&nbsp;:&nbsp;&nbsp;IN&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;greater_bc&nbsp;&nbsp;:&nbsp;&nbsp;OUT&nbsp;&nbsp;STD_LOGIC&nbsp;);&nbsp;&nbsp;--&nbsp;&nbsp;A大于DCH输出信号<br />END&nbsp;&nbsp;ENTITY&nbsp;&nbsp;comparator_bc&nbsp;;<br /><br />ARCHITECTURE&nbsp;&nbsp;behavioral&nbsp;&nbsp;OF&nbsp;&nbsp;comparator_bc&nbsp;IS<br />SIGNAL&nbsp;&nbsp;dataB&nbsp;:&nbsp;&nbsp;STD_LOGIC_VECTOR&nbsp;(&nbsp;7&nbsp;DOWNTO&nbsp;&nbsp;0&nbsp;)&nbsp;;--can't&nbsp;in<br /><br />BEGIN<br />inst_comparator&nbsp;:&nbsp;PROCESS&nbsp;(&nbsp;rfmute,dataA,&nbsp;dataB&nbsp;)<br />BEGIN<br />&nbsp;&nbsp;&nbsp;&nbsp;dataB&nbsp;&lt=&nbsp;&quot;11011100&quot;;&nbsp;&nbsp;&nbsp;--dataB=DCH<br />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;&nbsp;(&nbsp;rfmute='1'&nbsp;&nbsp;)&nbsp;&nbsp;THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FOR&nbsp;&nbsp;i&nbsp;&nbsp;IN&nbsp;&nbsp;7&nbsp;&nbsp;DOWNTO&nbsp;&nbsp;0&nbsp;&nbsp;LOOP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;&nbsp;(&nbsp;dataA&nbsp;(&nbsp;i&nbsp;)&nbsp;=&nbsp;'1'&nbsp;&nbsp;AND&nbsp;&nbsp;dataB&nbsp;(&nbsp;i&nbsp;)&nbsp;=&nbsp;'0'&nbsp;)&nbsp;&nbsp;THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;greater_bc&nbsp;&nbsp;&lt=&nbsp;&nbsp;&nbsp;'1'&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXIT&nbsp;;&nbsp;&nbsp;&nbsp;--&nbsp;&nbsp;已经判断出dataA&gt&nbsp;dataB,则跳出循环<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ELSE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;greater_bc&nbsp;&nbsp;&lt=&nbsp;&nbsp;&nbsp;'0'&nbsp;;<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;&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;LOOP;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ELSE<br />&nbsp;&nbsp;&nbsp;&nbsp;greater_bc&nbsp;&nbsp;&lt=&nbsp;&nbsp;&nbsp;'0'&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;&nbsp;IF&nbsp;;<br />END&nbsp;&nbsp;PROCESS&nbsp;&nbsp;inst_comparator&nbsp;;<br />END&nbsp;&nbsp;ARCHITECTURE&nbsp;&nbsp;behavioral&nbsp;;<br /><br />在maxplus2试验时,EXIT要删除,否则编译不能通过。<br />做试验时,在高四位输入为1101时输出改变,与低四位无关,不知道程序有什么问题。请高手指点。谢谢!
 楼主| xubanghui 发表于 2007-7-14 07:59 | 显示全部楼层

重新试验只与最低位有关,

重新试验只与最低位有关,与其他位无关。不知道程序那儿有问题
sibaidong 发表于 2007-7-14 08:53 | 显示全部楼层

程序有点问题吧,等于时就输不出1

loop&nbsp;循环我很少用,没实验过!
 楼主| xubanghui 发表于 2007-7-14 10:25 | 显示全部楼层

那一般用什么语句解决?

那一般用什么语句解决?
zhanghao35 发表于 2007-7-14 17:44 | 显示全部楼层

用变量不要用信号

signal定义的信号要到最后一个生效,variable&nbsp;一有变化就跟着变。这里用到了许多if,编译是不是有告警,“the&nbsp;last&nbsp;if&nbsp;will&nbsp;take&nbsp;effect&quot;.<br />楼主可以试试!
 楼主| xubanghui 发表于 2007-7-14 20:02 | 显示全部楼层

您说的对,如何用VARIABLE,请您指点一下。

您说的对,编译警告显示:found&nbsp;multiple&nbsp;assignments&nbsp;to&nbsp;the&nbsp;same&nbsp;signal&nbsp;or&nbsp;signal&nbsp;bit&quot;greater_bc&quot;-only&nbsp;the&nbsp;last&nbsp;assignment&nbsp;will&nbsp;take&nbsp;effect.请教如何用VARIABLE,请指点。给个例题也可以。谢谢
 楼主| xubanghui 发表于 2007-7-15 09:39 | 显示全部楼层

花了两天解决这个问题,少用FOR LOOP语句,供大家学习。

LIBRARY&nbsp;&nbsp;IEEE&nbsp;;<br />USE&nbsp;&nbsp;IEEE.STD_LOGIC_1164.ALL&nbsp;;<br />ENTITY&nbsp;&nbsp;comparator_bc&nbsp;&nbsp;IS&nbsp;&nbsp;--&nbsp;&nbsp;表示8位数值比较器&gt=DCH,<br />PORT&nbsp;(&nbsp;&nbsp;dataA&nbsp;&nbsp;:&nbsp;&nbsp;IN&nbsp;&nbsp;STD_LOGIC_VECTOR&nbsp;(&nbsp;7&nbsp;DOWNTO&nbsp;&nbsp;0&nbsp;)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rfmute&nbsp;:&nbsp;&nbsp;IN&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bigerout&nbsp;&nbsp;:&nbsp;&nbsp;OUT&nbsp;&nbsp;STD_LOGIC&nbsp;);&nbsp;&nbsp;--&nbsp;&nbsp;A大于DCH输出信号<br />END&nbsp;&nbsp;ENTITY&nbsp;&nbsp;comparator_bc&nbsp;;<br /><br />ARCHITECTURE&nbsp;&nbsp;behavioral&nbsp;&nbsp;OF&nbsp;&nbsp;comparator_bc&nbsp;IS<br />SIGNAL&nbsp;temp_dataA&nbsp;:&nbsp;STD_LOGIC_VECTOR(&nbsp;4&nbsp;DOWNTO&nbsp;0);<br />BEGIN<br />temp_dataA&nbsp;&lt=&nbsp;&nbsp;dataA(4)&nbsp;&&nbsp;dataA(3)&nbsp;&&nbsp;dataA(2)&nbsp;&&nbsp;dataA(1)&nbsp;&&nbsp;dataA(0);<br />inst_comparator&nbsp;:&nbsp;PROCESS&nbsp;(&nbsp;rfmute,dataA(7),dataA(6),dataA(5),dataA(4),dataA(3),dataA(2),dataA(1),dataA(0))<br />BEGIN<br />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;(&nbsp;rfmute=&nbsp;'0')&nbsp;THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bigerout&nbsp;&nbsp;&lt=&nbsp;&nbsp;&nbsp;'1'&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ELSE&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;&nbsp;(&nbsp;dataA(7)='1'&nbsp;AND&nbsp;dataA(6)='1'&nbsp;AND&nbsp;dataA(5)='1'&nbsp;)&nbsp;&nbsp;THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bigerout&nbsp;&nbsp;&lt=&nbsp;&nbsp;&nbsp;'1'&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ELSIF&nbsp;(dataA(7)='1'&nbsp;AND&nbsp;dataA(6)='1'&nbsp;AND&nbsp;dataA(5)='0')&nbsp;THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASE&nbsp;temp_dataA&nbsp;IS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;11111&quot;&nbsp;=&gt&nbsp;bigerout&nbsp;&nbsp;&lt=&nbsp;&nbsp;&nbsp;'1'&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;11110&quot;&nbsp;=&gt&nbsp;bigerout&nbsp;&nbsp;&lt=&nbsp;&nbsp;&nbsp;'1'&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;11101&quot;&nbsp;=&gt&nbsp;bigerout&nbsp;&nbsp;&lt=&nbsp;&nbsp;&nbsp;'1'&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;11100&quot;&nbsp;=&gt&nbsp;bigerout&nbsp;&nbsp;&lt=&nbsp;&nbsp;&nbsp;'0'&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&nbsp;OTHERS&nbsp;=&gt&nbsp;bigerout&nbsp;&nbsp;&lt=&nbsp;&nbsp;&nbsp;'0'&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;CASE;&nbsp;--&nbsp;&nbsp;已经判断出dataA&gt&nbsp;DCH,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ELSE&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bigerout&nbsp;&nbsp;&lt=&nbsp;&nbsp;&nbsp;'0'&nbsp;;<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;&nbsp;PROCESS&nbsp;&nbsp;inst_comparator&nbsp;;<br />END&nbsp;&nbsp;ARCHITECTURE&nbsp;&nbsp;behavioral&nbsp;;<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

39

帖子

0

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