haizheng4 发表于 2013-5-30 18:07:44

求助VHDL代码优化设置

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY WH IS
    PORT(
                  pwmin11           : IN    STD_LOGIC;                  
                  motor1        : out    std_logic_vector(3 downto 0)
    );
END WH;

ARCHITECTURE rt1 OF WH926 IS
       
BEGIN
PROCESS (pwmin11)
        VARIABLE count1: integer := 0;
BEGIN
        IF(pwmin11'event and pwmin11='1') THEN
                count1 := count1 + 1;
                if(count1=1) then
                        motor1 <= "1100";
                elsif(count1=2) then
                        motor1 <= "0110";               
                elsif(count1=3) then
                        motor1 <= "0011";       
                elsif(count1=4) then
                        motor1 <= "1001";
                        count1 := 0;
                end if;
        end if;
end process;
END rt1;就上面这段代码 使用Quartus II 13网络版,Device使用EPM3032ATC44-10
编译的时候报错Error (280010): Can't fit 36 registers in device
我查了下大概是器件的单元不够用了 我换了一个256的片子 确实可以编译过去了

可是就这么点代码量 我觉得应该没问题吧 要不这个片子还能干啥啊
是我什么地方设置的有问题吗
谢谢

wangjun403 发表于 2013-5-30 18:15:25

先确定计数器的最大值,然后精确的定义位宽 VARIABLE count1: integer := 0;搞个integer上去算怎么回事

haizheng4 发表于 2013-5-30 18:21:52

wangjun403 发表于 2013-5-30 18:15 static/image/common/back.gif
先确定计数器的最大值,然后精确的定义位宽搞个integer上去算怎么回事

谢谢 我VHDL是菜鸟级别
只能抄程序改程序 呵呵
        VARIABLE count1: integer range 0 to 3;
我把那句改成上面限制了下范围 编译没问题了 只占用5/36了

bdzhaojing 发表于 2014-8-22 13:35:17

学习了,学习了
页: [1]
查看完整版本: 求助VHDL代码优化设置