avarte 0 28 мая, 2009 Опубликовано 28 мая, 2009 · Жалоба должен быть генератор выдающий последовательность 204 байта В8,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,910,11,12,1,2,3,4,5,6,7,8,9,10,11,12 ,1,2,3 ...и.т.д. до конца посылки в 204 байта но вот незадача ISE выдает ошибку на строке "j:= i rem 12;" с пояснением "ERROR:Xst:769 - "D:/xilinx_diplom/svert_peremej_3/generator.vhd" line 26: Operator <REMAINDER> must have constant operands or first operand must be power of 2" вот собственно код library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity generator is Port ( clk : in STD_LOGIC; potok : out STD_LOGIC_vector (7 downto 0); sinxro : out STD_LOGIC ); end generator; architecture Behavioral of generator is begin generator: process(clk) variable i: integer range 1 to 204; -- 408 variable j: integer range 1 to 12; begin if(clk'event and clk='1') then -- выставление сигнала на фронте импульса case i is -- формирование выходного сигнала when 1 => potok <=x"b8"; --B8 when others => j:= i rem 12; potok <= conv_std_logic_vector(j,8); end case; case i is -- формирование синхро импульса when 1 => sinxro <='1'; when others => sinxro <='0'; end case; i:=i + 1; end if; end process generator; end Behavioral; подскажите в чем я ошибаюсь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 28 мая, 2009 Опубликовано 28 мая, 2009 · Жалоба должен быть генератор выдающий последовательность 204 байта В8,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,910,11,12,1,2,3,4,5,6,7,8,9,10,11,12 ,1,2,3 ...и.т.д. до конца посылки в 204 байта но вот незадача ISE выдает ошибку на строке "j:= i rem 12;" с пояснением "ERROR:Xst:769 - "D:/xilinx_diplom/svert_peremej_3/generator.vhd" line 26: Operator <REMAINDER> must have constant operands or first operand must be power of 2" ... подскажите в чем я ошибаюсь Ну, по-видимому в том, что XST не может синтезировать схему делителя произвольного числа на константу, во всяком случае, на сколько я знаю, не обязан:). Меняйте код, зачем Вам громоздкая схема комбинаторного делителя? Пусть лучше счетчик считает до 12 и сбрасывается в 0(1). Ну и второй счетчик, для формирования длины всей последовательности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
avarte 0 29 мая, 2009 Опубликовано 29 мая, 2009 · Жалоба спасибо за идею вот что у меня получилось generator: process(clk) variable i: integer range 1 to 204:=1; variable j: STD_LOGIC_vector (7 downto 0):=x"01"; begin if(clk'event and clk='1') then -- выставление сигнала на фронте импульса if j >= x"0d" then j:=x"01"; end if; case i is -- формирование выходного сигнала when 1 => sinxro <='1'; potok <=x"b8"; --B8 when others => sinxro <='0'; potok <= j ; end case; i:=i + 1; j:=j + 1; end if; end process generator; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться