请教一个VHDL问题,有代码,很简单

[复制链接]
 楼主| lyghj 发表于 2009-3-15 16:12 | 显示全部楼层 |阅读模式
LIBRARY&nbsp;IEEE;<br />USE&nbsp;IEEE.STD_LOGIC_1164.ALL;<br />USE&nbsp;IEEE.STD_LOGIC_UNSIGNED.ALL;&nbsp;<br /><br />ENTITY&nbsp;SPDA&nbsp;IS<br />&nbsp;&nbsp;&nbsp;&nbsp;PORT&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;CLK,PHSEL0,PHSEL1&nbsp;&nbsp;&nbsp;&nbsp;:IN&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SDAA&nbsp;&nbsp;&nbsp;&nbsp;:OUT&nbsp;INTEGER&nbsp;RANGE&nbsp;0&nbsp;TO&nbsp;127;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDAA&nbsp;&nbsp;&nbsp;&nbsp;:OUT&nbsp;INTEGER&nbsp;RANGE&nbsp;0&nbsp;TO&nbsp;127);<br />END;<br /><br />ARCHITECTURE&nbsp;BEHV&nbsp;OF&nbsp;SPDA&nbsp;IS<br />&nbsp;&nbsp;&nbsp;&nbsp;SIGNAL&nbsp;PHSEL&nbsp;&nbsp;&nbsp;&nbsp;:STD_LOGIC_VECTOR(1&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;SIGNAL&nbsp;SDAA_S&nbsp;&nbsp;&nbsp;&nbsp;:INTEGER&nbsp;RANGE&nbsp;0&nbsp;TO&nbsp;127&nbsp;&nbsp;&nbsp;&nbsp;:=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;SIGNAL&nbsp;PDAA_S&nbsp;&nbsp;&nbsp;&nbsp;:INTEGER&nbsp;RANGE&nbsp;0&nbsp;TO&nbsp;127&nbsp;:=0;&nbsp;&nbsp;&nbsp;&nbsp;<br />BEGIN<br />&nbsp;&nbsp;&nbsp;&nbsp;PHSEL&nbsp;&lt=&nbsp;PHSEL1&nbsp;&&nbsp;PHSEL0;<br />&nbsp;&nbsp;&nbsp;&nbsp;PROCESS(CLK)<br />&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;(&nbsp;CLK'EVENT&nbsp;AND&nbsp;CLK='1'&nbsp;)&nbsp;THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SDAA_S&nbsp;&lt=&nbsp;SDAA_S+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDAA_S&nbsp;&lt=&nbsp;PDAA_S+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;IF;<br />&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;PROCESS;<br />&nbsp;&nbsp;&nbsp;&nbsp;SDAA&nbsp;&lt=&nbsp;SDAA_S;<br />--&nbsp;&nbsp;&nbsp;&nbsp;CASE&nbsp;(PHSEL)&nbsp;IS&nbsp;&nbsp;&nbsp;&nbsp;<br />--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;00&quot;&nbsp;=&gt<br />--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDAA&nbsp;&lt=&nbsp;PDAA_S;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;01&quot;&nbsp;=&gt<br />--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDAA&nbsp;&lt=&nbsp;PDAA_S+32;&nbsp;&nbsp;&nbsp;&nbsp;<br />--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;10&quot;&nbsp;=&gt<br />--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDAA&nbsp;&lt=&nbsp;PDAA_S+64;&nbsp;&nbsp;&nbsp;&nbsp;<br />--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;11&quot;&nbsp;=&gt<br />--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDAA&nbsp;&lt=&nbsp;PDAA_S+32;&nbsp;&nbsp;&nbsp;&nbsp;<br />--&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;CASE;<br />END&nbsp;BEHV;
 楼主| lyghj 发表于 2009-3-15 16:17 | 显示全部楼层

这是两个波形发生器的地址发生器

每个时钟上升沿地址序列加一,相位选择信号(PHSEL)控制其中的一个地址(PDAA)相对另一个地址(SDAA)可以是同相,差90度,差180度和差270度。<br />本人水平有限,思路是有,但在VHDL中功能仿真能过,没有办法综合。
 楼主| lyghj 发表于 2009-3-15 20:40 | 显示全部楼层

有答案了

LIBRARY&nbsp;IEEE;<br />USE&nbsp;IEEE.STD_LOGIC_1164.ALL;<br />USE&nbsp;IEEE.STD_LOGIC_UNSIGNED.ALL;&nbsp;<br /><br />ENTITY&nbsp;SPDA&nbsp;IS<br />&nbsp;&nbsp;&nbsp;&nbsp;PORT&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;CLK,PHSEL0,PHSEL1&nbsp;&nbsp;&nbsp;&nbsp;:IN&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SDAA&nbsp;&nbsp;&nbsp;&nbsp;:OUT&nbsp;INTEGER&nbsp;RANGE&nbsp;0&nbsp;TO&nbsp;127;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDAA&nbsp;&nbsp;&nbsp;&nbsp;:OUT&nbsp;INTEGER&nbsp;RANGE&nbsp;0&nbsp;TO&nbsp;127);<br />END;<br /><br />ARCHITECTURE&nbsp;BEHV&nbsp;OF&nbsp;SPDA&nbsp;IS<br />&nbsp;&nbsp;&nbsp;&nbsp;SIGNAL&nbsp;PHSEL&nbsp;&nbsp;&nbsp;&nbsp;:STD_LOGIC_VECTOR(1&nbsp;DOWNTO&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;SIGNAL&nbsp;SDAA_S&nbsp;&nbsp;&nbsp;&nbsp;:INTEGER&nbsp;RANGE&nbsp;0&nbsp;TO&nbsp;127&nbsp;&nbsp;&nbsp;&nbsp;:=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;SIGNAL&nbsp;PDAA_S&nbsp;&nbsp;&nbsp;&nbsp;:INTEGER&nbsp;RANGE&nbsp;0&nbsp;TO&nbsp;127&nbsp;:=0;&nbsp;&nbsp;&nbsp;&nbsp;<br />BEGIN<br />&nbsp;&nbsp;&nbsp;&nbsp;PHSEL&nbsp;&lt=&nbsp;PHSEL1&nbsp;&&nbsp;PHSEL0;<br />&nbsp;&nbsp;&nbsp;&nbsp;PROCESS(CLK,PHSEL)<br />&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;(&nbsp;CLK'EVENT&nbsp;AND&nbsp;CLK='1'&nbsp;)&nbsp;THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SDAA_S&nbsp;&lt=&nbsp;SDAA_S+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASE&nbsp;(PHSEL)&nbsp;IS&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;00&quot;&nbsp;=&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDAA_S&nbsp;&lt=&nbsp;SDAA_S+0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;01&quot;&nbsp;=&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDAA_S&nbsp;&lt=&nbsp;SDAA_S+32;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;10&quot;&nbsp;=&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDAA_S&nbsp;&lt=&nbsp;SDAA_S+64;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;11&quot;&nbsp;=&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDAA_S&nbsp;&lt=&nbsp;SDAA_S+96;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;CASE;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;IF;<br />&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;PROCESS;<br />&nbsp;&nbsp;&nbsp;&nbsp;SDAA&nbsp;&lt=&nbsp;SDAA_S-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;PDAA&nbsp;&lt=&nbsp;PDAA_S;<br />END&nbsp;BEHV;<br />
worrior_1 发表于 2009-3-16 11:17 | 显示全部楼层

请教一个VHDL问题,有代码,很简单

你最开始那个程序要翻转270应该+96吧,你下面的新程序最后&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SDAA&nbsp;&lt=&nbsp;SDAA_S-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;PDAA&nbsp;&lt=&nbsp;PDAA_S;<br />意思是叫程序循环128次?
 楼主| lyghj 发表于 2009-3-16 17:01 | 显示全部楼层

是的,应该加96,测试时改的,发上来忘记改回去了

就是循环128次,到头后重新开始。改过的程序还有个小问题:第一个时钟周期PDAA输出有一个跳变,不过后面的周期就全部对了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

197

帖子

3

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

28

主题

197

帖子

3

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