enzaime 0 9 января, 2016 Опубликовано 9 января, 2016 (изменено) · Жалоба Вопрос такой: у меня есть модуль вот такой: http://www.ebay.com/itm/FT232RL-3-3V-5-5V-...t-/141724029351 и ПЛИС вот такая: http://www.terasic.com.tw/cgi-bin/page/arc...lish&No=593 (cyclone iv) Для uart модуля я установил на комп драйвер com порта http://www.ftdichip.com/Drivers/VCP.htm. Вроде бы всё работает ( при посылке данных светодиод на плате мигает ). Использую такую вот программку для передачи данных через com порт http://compt.ru/ru/index.php Написал вот такой приёмник для ПЛИС: ------------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.all; entity reciver is port( clk : in STD_LOGIC; ftdi_txd : in STD_LOGIC; led : out STD_LOGIC_VECTOR(7 downto 0) ); end reciver; --}} End of automatically maintained section architecture arch of reciver is signal state:natural:=0; signal bitcnt:natural:=0; begin process(clk) begin if(rising_edge(clk)) then if(state=0) then if(ftdi_txd='0') then state<=1; bitcnt<=0; end if; end if; if(state=1) then if(bitcnt<8) then led(bitcnt)<=ftdi_txd; bitcnt<=bitcnt+1; else if(ftdi_txd='1') then state<=0; end if; end if; end if; end if; end process; -- enter your statements here -- end arch; приёмник писал из соображений таких: 1 старт бит ( низкий уровень ), 8 битов данных, 1 стоп бит ( высокий уровень ) частота clk 9600 гц ( получаю так: 50 Мгц делю на 5208 ). Получаю её вот так: library IEEE; use IEEE.STD_LOGIC_1164.all; entity freq is generic(n:natural:=5208); port( clk : in STD_LOGIC; clk1 : out STD_LOGIC ); end freq; --}} End of automatically maintained section architecture arch of freq is signal a:natural:=0; begin process(clk) begin if(rising_edge(clk)) then if(a>=0 and a<n/2) then clk1<='1'; else if(a>=n/2 and a<n-1) then clk1<='0'; end if; end if; if(a>=n-1) then a<=0; else a<=a+1; end if; end if; end process; -- enter your statements here -- end arch; Но в результате получаю беспорядочное мигание светодиодами ( радует только одно: мигают только при передаче, т.е. что-то правильное уже есть) Подключаю так: контакт rx к ножке ПЛИС Понимаю, что не имея перед глазами всех этих штук сложно найти ошибку, но может знает кто в чём может быть дело? Перемычка в положении 3.3 вольта Изменено 9 января, 2016 пользователем enzaime Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 9 января, 2016 Опубликовано 9 января, 2016 · Жалоба Прежде всего, общие не соеденены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
enzaime 0 9 января, 2016 Опубликовано 9 января, 2016 · Жалоба Прежде всего, общие не соеденены. Общие это vcc и gnd? Если про них, то и так всё работает ( что-то там светится ). Обновил фотку в первом сообщении (теперь в рабочем варианте (плата и модуль питаются от компа)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 9 января, 2016 Опубликовано 9 января, 2016 · Жалоба Но в результате получаю беспорядочное мигание светодиодами ( радует только одно: мигают только при передаче, т.е. что-то правильное уже есть) Понимаю, что не имея перед глазами всех этих штук сложно найти ошибку, но может знает кто в чём может быть дело? 1. Делаем перемычку Rx-Tx внутри ПЛИС и добиваемся устойчивой передачи и приема данных. Смотрим осциллом... 2. Переносим перемычку из ПЛИС на контакты разъема платы... и добиваемся устойчивой передачи и приема данных. Смотрим осциллом... 3. Подключаем переходник USB на UART к компьютеру. На переходнике Делаем перемычку Rx-Tx и добиваемся устойчивой передачи и приема данных со стороны компьютера.. 4. Сравниваем диаграммы при передаче одинаковых кодов, например буквы U. Длительности импульсов должны быть одинаковыми... На опекорес полно исходников UARTов, берем и смотрим коды. При установке ИСЕ есть образцовые проекты - вэвйген. Там есть и UART. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shamrel 0 10 января, 2016 Опубликовано 10 января, 2016 · Жалоба Рекомендую рабочий вариант с объяснениями: A serial interface is a simple way to connect an FPGA to a PC. We just need a transmitter and receiver module Правда, реализация на Verilog, но мне в свое время хорошо помог. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Inanity 1 10 января, 2016 Опубликовано 10 января, 2016 (изменено) · Жалоба 1. Самая главная ошибка в том, что нет синхронизаторов на ftdi_txd. Этот сигнал является асинхронным для вашего приёмника. Т.е. его спад/фронт может прийти в момент считывания приёмником, а это приведёт к метастабильности всей схемы из-за несоблюдения setup/hold триггера. Изучайте CDC (Clock Domain Crossing), в сети море статей. Например, по ссылке от shamrel в секции описания приёмника входной сигнал синхронизируется с помощью регистра RxD_sync. (правда, там на verilog, но сути не меняет). 2. Генерировать тактовый сигнал на логике - не самый удачный вариант. Это нужно использовать только в крайнем случае и с пониманием. А приёмник UART можно сделать и на 50мгц. Так можно будет точнее поймать перепад (1 -> 0), т.е. стартовый бит, а далее счётчиком отсчитать нужное число тактов, чтобы попасть на середину каждого информационного бита. Общие это vcc и gnd? Если про них, то и так всё работает ( что-то там светится ). Обновил фотку в первом сообщении (теперь в рабочем варианте (плата и модуль питаются от компа)) 3. Общая - земля. Всё и так работает видимо потому, что земля общая за счёт USB, который подключен к одному компьютеру. Но это не всегда будет работать, соединяйте землю нормально. Изменено 10 января, 2016 пользователем Inanity Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SavageForest 0 11 января, 2016 Опубликовано 11 января, 2016 · Жалоба стоит проверить работоспособность FTDI и драйвера. бывает свежий драйвер порет чушь в порт из-за китайского клона. лечится установкой старого драйвера FTDI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
enzaime 0 11 января, 2016 Опубликовано 11 января, 2016 · Жалоба стоит проверить работоспособность FTDI и драйвера. бывает свежий драйвер порет чушь в порт из-за китайского клона. лечится установкой старого драйвера FTDI. Блин, я вчера так и сделал и всё заработало как часы. Как и должно быть. Причина вот: я сразу полез устанавливать скачанный драйвер, и лишь когда начал пробовать на другом компе устанавливать драйвера увидел, что при втыкании модуля он сам устанавливает нужные драйвера (видимо из своей внутренней памяти). В общем всё как всегда... Всем спасибо за участие, все свободны Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться