yakuzaa 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 (изменено) · Жалоба Делаю подобие "видеоглазка", но есть одна проблема - искажение изображения, помогите пожалуйста! ARM + LCD + Camera Изменено 8 февраля, 2011 пользователем Ivan Kuznetzov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 9 февраля, 2011 Опубликовано 9 февраля, 2011 · Жалоба В ПЛИС у вас получилась асинхронная схема. Для ПЛИС это не гуд (в особенности для выходного сигнала WR). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yakuzaa 0 11 февраля, 2011 Опубликовано 11 февраля, 2011 · Жалоба подскажите пожалуйста, как надо сделать? я не специалист по плисам... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 11 февраля, 2011 Опубликовано 11 февраля, 2011 · Жалоба Вам нужна тактовая частота и все тригера, которые есть в схеме, должны напрямую от нее тактироваться (без всякой логики в цепях тактирования). Выходы (особенно типа WR) так же должны идти напрямую с выходов тригеров, иначе там могут быть иголки из за гонок Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stu 0 10 апреля, 2011 Опубликовано 10 апреля, 2011 · Жалоба Привет. у меня немного другая ситуация)) в инете не нашел поэтому пишу сюда. мне нужен пример использования внутреннего генератора ПЛИС xilinx. опишите пжлст, если не затруднит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 10 апреля, 2011 Опубликовано 10 апреля, 2011 · Жалоба мне нужен пример использования внутреннего генератора ПЛИС xilinxКак найдете - напишите в Xilinx. Они не в курсе, что в их FPGA есть внутренний генератор :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nk@ 0 10 апреля, 2011 Опубликовано 10 апреля, 2011 · Жалоба Как найдете - напишите в Xilinx. Они не в курсе, что в их FPGA есть внутренний генератор :rolleyes: Парень, кмк, имел ввиду PLL :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stu 0 17 апреля, 2011 Опубликовано 17 апреля, 2011 (изменено) · Жалоба дк, обязательно внешний генератор юзать чтоль? и еще вопросик. есть код(для проверки работоспособности): test_bench: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.ALL; ENTITY dem_al_TB_vhd IS END dem_al_TB_vhd; ARCHITECTURE behavior OF dem_al_TB_vhd IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT dem_al PORT( Tg : IN std_logic; knopka_90 : IN std_logic; knopka_Min_90 : IN std_logic; Enable : OUT std_logic; FF : OUT std_logic_vector(1 to 12); Dir_1 : OUT std_logic; Dir_2 : OUT std_logic; Step_1 : OUT std_logic; Step_2 : OUT std_logic ); END COMPONENT; --Inputs SIGNAL Tg : std_logic := '0'; SIGNAL knopka_90 : std_logic := '0'; SIGNAL knopka_Min_90 : std_logic := '0'; --Outputs SIGNAL Enable : std_logic; SIGNAL FF : std_logic_vector(1 to 12); SIGNAL Dir_1 : std_logic; SIGNAL Dir_2 : std_logic; SIGNAL Step_1 : std_logic; SIGNAL Step_2 : std_logic; BEGIN -- Instantiate the Unit Under Test (UUT) uut: dem_al PORT MAP( Tg => Tg, knopka_90 => knopka_90, knopka_Min_90 => knopka_Min_90, Enable => Enable, FF => FF, Dir_1 => Dir_1, Dir_2 => Dir_2, Step_1 => Step_1, Step_2 => Step_2 ); Tg <= not Tg after 10 ms; knopka_90 <= '1' after 20 ms, '0' after 30 ms; END; vhdl: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity dem_al is Port ( Tg : in STD_LOGIC; knopka_90 : in STD_LOGIC; knopka_Min_90 : in STD_LOGIC; Enable : out STD_LOGIC; FF : out STD_LOGIC_VECTOR(1 to 12) := "000000000000"; Dir_1 : out STD_LOGIC; Dir_2 : out STD_LOGIC; Step_1 : out STD_LOGIC; Step_2 : out STD_LOGIC); end dem_al; architecture Behavioral of dem_al is begin process (Tg) variable k: integer; variable F: integer := 600; --чтобы не было неуказанного начала шага в момент включения begin if (knopka_90='1') then --определяем направление вращения (по часовой) k:=1; --для определения вращения каждого двигателя на разных этапах движения F:=0; --счетчик для выполнения шага(для плавности разгона. определяет паузу между импульсами) end if; if (knopka_min_90='1') then --определяем направление вращения (против часовой) k:=0; F:=0; end if; if (F<586) then --когда угол меньше 90 Enable<='1'; -- сигнал активного состояния для драйвера PLS... if (Tg='1') then -- Когда тактовый сигнал=1 F:=F+1; -- Складываем для остановки при угле=90гр. FF<=CONV_STD_LOGIC_VECTOR(F,12); --для просмотра F if (k=1) then --определяем направление вращения первого двигателя Dir_1<='1'; elsif (k=0) then Dir_1<='0'; end if; if (F=1 or F=17 or F=25 or F=29 or F=31 or F=32) then -- Первая фаза разгона в противофазе if (k=1) then --определяем направление вращения второго двигателя Dir_2<='0'; elsif (k=0) then Dir_2<='1'; end if; Step_1<='1'; --шаг первого Step_2<='1'; --шаг второго elsif (F=42 or F=47 or F=50 or F=52 or F=53) then -- Вторая фаза разгона первым Step_1<='1'; elsif (F=55 or F=56) then -- Третья фаза разгона синфазно if (k=1) then Dir_2<='1'; elsif (k=0) then Dir_2<='0'; end if; Step_1<='1'; Step_2<='1'; elsif (F>56 and F<531) then -- Движение синфазно if (k=1) then Dir_2<='1'; elsif (k=0) then Dir_2<='0'; end if; Step_1<='1'; Step_2<='1'; elsif (F=534 or F=536 or F=539 or F=544 or F=554) then -- Вторая фаза торможения первым Step_1<='1'; elsif(F=555 or F=557 or F=561 or F=569 or F=585) then -- Третья фаза торможения в противофазе if (k=1) then Dir_2<='0'; elsif (k=0) then Dir_2<='1'; end if; Step_1<='1'; Step_2<='1'; end if; else --когда тактовый=0 и F>585 (угол больше 90) Step_1<='0'; Step_2<='0'; Enable<='0'; end if; end if; end process; end Behavioral; т.е. есть два движка. второй закреплен на валу первого. суммарный угол поворота=90 градусов. в симуляции все работает. а после прошивки шаговый двигатель просто шагает безостановочно и все. еще нет никаких пропусков импульса в соответствии с условием сравнения F. но в начальный момент, когда F=600 двигатели не шагают. Условие на проверку направления работает. Изменено 17 апреля, 2011 пользователем stu Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 18 апреля, 2011 Опубликовано 18 апреля, 2011 · Жалоба дк, обязательно внешний генератор юзать чтольДа а после прошивки шаговый двигатель просто шагает безостановочноЧто написали, то он и делает. Ответьте на простой вопрос - с какой скоростью он у вас шагает? Где задается частота переключения фаз ШД? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stu 0 18 апреля, 2011 Опубликовано 18 апреля, 2011 · Жалоба со скоростью зависящей от частоты с генератора. какой поставить период с такой и будет. но в проге есть условия, при выполнении которых некоторые импульсы не должны отрабатываться. на них не реагирует. я не могу понять: в начальный момент, когда F=600 условие F<586 срабатывает норм, потом при его сбросе, после нажатия кнопки - нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 19 апреля, 2011 Опубликовано 19 апреля, 2011 · Жалоба со скоростью зависящей от частоты с генератора. какой поставить период с такой и будет. У вас в 'проге' вообще нет входа для генератора. Tg - это не тактовый сигнал. Для того, что бы он стал тактовым (точнее клоком), внутренность process'а должна быть помещена в if rising_edge(Tg) (единственное исключение - асинхронный сброс) И вообще, почитайте какой нибудь букварь по HDL. HDL - это не С! Это язык описания аппаратуры, а не язык программирования Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться