请教一个VHDL问题,有代码,很简单
LIBRARY IEEE;<br />USE IEEE.STD_LOGIC_1164.ALL;<br />USE IEEE.STD_LOGIC_UNSIGNED.ALL; <br /><br />ENTITY SPDA IS<br /> PORT ( CLK,PHSEL0,PHSEL1 :IN STD_LOGIC;<br /> SDAA :OUT INTEGER RANGE 0 TO 127;<br /> PDAA :OUT INTEGER RANGE 0 TO 127);<br />END;<br /><br />ARCHITECTURE BEHV OF SPDA IS<br /> SIGNAL PHSEL :STD_LOGIC_VECTOR(1 DOWNTO 0);<br /> SIGNAL SDAA_S :INTEGER RANGE 0 TO 127 :=0;<br /> SIGNAL PDAA_S :INTEGER RANGE 0 TO 127 :=0; <br />BEGIN<br /> PHSEL <= PHSEL1 & PHSEL0;<br /> PROCESS(CLK)<br /> BEGIN<br /> IF ( CLK'EVENT AND CLK='1' ) THEN<br /> SDAA_S <= SDAA_S+1;<br /> PDAA_S <= PDAA_S+1;<br /> END IF;<br /> END PROCESS;<br /> SDAA <= SDAA_S;<br />-- CASE (PHSEL) IS <br />-- WHEN "00" =><br />-- PDAA <= PDAA_S; <br />-- WHEN "01" =><br />-- PDAA <= PDAA_S+32; <br />-- WHEN "10" =><br />-- PDAA <= PDAA_S+64; <br />-- WHEN "11" =><br />-- PDAA <= PDAA_S+32; <br />-- END CASE;<br />END BEHV;这是两个波形发生器的地址发生器
每个时钟上升沿地址序列加一,相位选择信号(PHSEL)控制其中的一个地址(PDAA)相对另一个地址(SDAA)可以是同相,差90度,差180度和差270度。<br />本人水平有限,思路是有,但在VHDL中功能仿真能过,没有办法综合。有答案了
LIBRARY IEEE;<br />USE IEEE.STD_LOGIC_1164.ALL;<br />USE IEEE.STD_LOGIC_UNSIGNED.ALL; <br /><br />ENTITY SPDA IS<br /> PORT ( CLK,PHSEL0,PHSEL1 :IN STD_LOGIC;<br /> SDAA :OUT INTEGER RANGE 0 TO 127;<br /> PDAA :OUT INTEGER RANGE 0 TO 127);<br />END;<br /><br />ARCHITECTURE BEHV OF SPDA IS<br /> SIGNAL PHSEL :STD_LOGIC_VECTOR(1 DOWNTO 0);<br /> SIGNAL SDAA_S :INTEGER RANGE 0 TO 127 :=0;<br /> SIGNAL PDAA_S :INTEGER RANGE 0 TO 127 :=0; <br />BEGIN<br /> PHSEL <= PHSEL1 & PHSEL0;<br /> PROCESS(CLK,PHSEL)<br /> BEGIN<br /> IF ( CLK'EVENT AND CLK='1' ) THEN<br /> SDAA_S <= SDAA_S+1;<br /> CASE (PHSEL) IS <br /> WHEN "00" =><br /> PDAA_S <= SDAA_S+0; <br /> WHEN "01" =><br /> PDAA_S <= SDAA_S+32; <br /> WHEN "10" =><br /> PDAA_S <= SDAA_S+64; <br /> WHEN "11" =><br /> PDAA_S <= SDAA_S+96; <br /> END CASE;<br /> END IF;<br /> END PROCESS;<br /> SDAA <= SDAA_S-1;<br /> PDAA <= PDAA_S;<br />END BEHV;<br />请教一个VHDL问题,有代码,很简单
你最开始那个程序要翻转270应该+96吧,你下面的新程序最后 <br /> SDAA <= SDAA_S-1;<br /> PDAA <= PDAA_S;<br />意思是叫程序循环128次?是的,应该加96,测试时改的,发上来忘记改回去了
就是循环128次,到头后重新开始。改过的程序还有个小问题:第一个时钟周期PDAA输出有一个跳变,不过后面的周期就全部对了。
页:
[1]