Просмотр полной версии : Изучение с "нуля" VHDL и ПЛИС Xilinx
Viktor2312
06.10.2014, 21:05
Как оказалось данная тема лишняя на форуме, а я в ней задаю быдло вопросы, пишу копипасту, никому не нужную, от которой толку 0. И использую форум как туалетную бумагу.
Дабы не травмировать нежную психику подобных индивидуумов, я удалил все свои посты из данной темы, и в будущем тут писать ничего не буду. Изучение естественно продолжу, а всё что тут не нравится индивидуумам, будет на моём форуме RUЭВМ ссылка в подписи есть.
Всем пока...
Viktor2312, вот это правильно.готов поучаствовать.Так как самому тяжело вникнуть бывает.
к теории нужна практика -светодиодом помигать или кнопку понажимать.Кто будет подопытный без влаживания в девборды?
Цирк уехал.... facepalm.
Цифры - берем цифру 118 и мучаем ее в VHDL -
118 - десятичная,
if (cnt_one=118) then ........
"01110110" - векторная раскладка по битам, 8 бит
cnt_pre(7 downto 0) <= "01110110";
x"76" - шестнадцатиричная.
cnt_pre <= x"76";
Больше пока не надо ничем на цифровое представление голову забивать.
Туториал по VHDL (http://zx-pk.ru/showpost.php?p=364990&postcount=704) на примере построения аж сразу Спектрум-48.
---------- Post added at 00:33 ---------- Previous post was at 00:32 ----------
Вот это не понял, почему так, а не так как в трёх источниках написано
Мне это неведомо, наверное стандарты языка это поддерживают.
Но "всё прогрессивное человечество" пишет как в моих примерах. залезь в любой код :)
Да не.... Просто ты пытаешься сразу нахрапом взять новый для себя язык сразу весь... Это нехорошо, забьешь себе голову мешаниной определений, графиков. рисунков... Получится одна головная боль в результате.
Лучше начать с построения элементарного проекта, прямо в среде программирования.
Пускай там даже будет один логический элемент. А дальше - изучать операторы и конструкции из них, постепенно наворачивая сложность, симулируя работу прямо в голове.
Витянька, аккуратней устройство сделанное тобой точно может изменить судьбу человечества. Это минимум машина времени, максимум миелофон!
Тогда продолжу, может правильно будет
Правильно.
Только в таком "голом виде" это нельзя вставлять в проект, нужно оформить как процесс:
process(cnt_one) -- заголовок, напоминает function в С. В скобках - сигнал, от которого
зависит работа процесса (список чувствительности)
begin
if (cnt_one=118) then -- проверяем равен ли cnt_one 118-ти
a <= x0; -- если условие верно (true)
else
a <= x1; -- если условие не верно (false)
end if;
end process;
---------- Post added at 08:23 ---------- Previous post was at 08:14 ----------
А вот еще один вариант подобного рода, но уже без оператора if.
Здесь ничего не буду пока комментить, просто смотри, что там написано и понимание придет само, это просто :)
process(cnt_one)
begin
case (cnt_one) is
when (118) => a <= x0;
when (65) => a <= x2;
when others => a <= x1; -- здесь others означает "любое другое значение, кроме указанных"
end case;
end process;
---------- Post added at 08:36 ---------- Previous post was at 08:23 ----------
Ну и третий вариант до кучи.
Эта конструкция уже не требует заключения ее в процесс, она является процессом сама по себе:
a <= x0 when (cnt_one=118) else x1;
просто, как три рубля :)
Эту конструкцию можно расширить, подобно предыдущему примеру:
a <= x0 when (cnt_one=118) else
x2 when (cnt_one=65) else
x1;
---------- Post added at 08:55 ---------- Previous post was at 08:36 ----------
Ну и давай тогда напишем код для реального случая. Например, опишем знаменитый мультиплексор 555КП11. Он имеет два переключаемых канала по 4 разряда, вход переключения каналов, вход разрешения выдачи сигналов.
Заголовок проекта пропускаю, начнем:
A : in std_logic_vector(3 downto 0); --вход А, четырехразрядный
B : in std_logic_vector(3 downto 0); --вход В, четырехразрядный
Q : out std_logic_vector(3 downto 0); --выход Q, четырехразрядный
S : in std_logic; --вход управления переключением
OE_N : in std_logic; --вход управления выдачи информации
Q <= "ZZZZ" when (OE_N='1') else --если вход OE_N равен 1, то выходы в Z-состоянии
A when (S='0') else B; --подключаем на выход канал А, если S равно нулю, иначе - канал В
---------- Post added at 08:59 ---------- Previous post was at 08:55 ----------
Для тренировки напиши реальный проект и скомпилируй его.
А потом замени эту конструкцию when...else на вариант с if....then.
---------- Post added at 09:09 ---------- Previous post was at 08:59 ----------
Наверное, стОит добавить еще пару разъяснений.
Если мы используем какой-то одноразрядный сигнал (типа S или OE_N в предыдущем примере), то его состояние определять просто цифрой типа 0 или 1 нельзя. Компилятор будет ругаться. Квартус, по крайней мере. Поэтому состояние сигнала описывается цифрами 0 или 1 в одинарных кавычках типа '0' или '1'.
Если же сигнал не одноразрядный, то там уже допустимы привычные цифры, или те же нули и единицы, но уже в двойных кавычках ("1001", x"9", 9).
Если же нам надо перевести сигнал в Z-состояние, то мы, собственно, эту букву и используем.
---------- Post added at 10:38 ---------- Previous post was at 09:09 ----------
Пока мне на работе делать нефиг, напишу о триггерах и регистрах.
Оба эти элемента выделяются тем, что они работают по фронту управляющего сигнала.
В VHDL фронты сигналов определяются такими операторами -
Для нарастающего фронта -
(clock'event and clock='1') или
(rising_edge(clock))
Для спадающего фронта -
(clock'event and clock='0') или
(falling_edge(clock))
Использовать эти операторы можно двумя путями.
Самый простой (реализация регистра) -
Q <= A when (rising_edge(clock));
Тоесть, по нарастающему фронту сигнала clock данные сигнала А запишутся в регистр Q.
Более "канонически" можно написать так:
process(clock)
begin
if (rising_edge(clock)) then
Q <= A;
end if;
end process;
Очень часто бывает нужно сбрасывать регистр по определенному сигналу.
Это можно сделать например так:
process(clock,reset)
begin
if (reset='1') then
Q <= 0;
elsif (rising_edge(clock)) then
Q <= A;
end if;
end process;
---------- Post added at 10:49 ---------- Previous post was at 10:38 ----------
Кто будет подопытный без влаживания в девборды?
Можешь попробовать для экпериментов купить мелкую CPLD в каком-нибудь местном ларьке. Я вот себе прикупил для "карманных расходов" кучку EPM3064АTC44 по 40 рублей (1$). Хоть это и Альтеры а не Ксилинксы, но общая суть у них одинакова.
---------- Post added at 12:37 ---------- Previous post was at 10:49 ----------
Давайте, что ли, бегущий огонек сделаем? :)
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity led is
port(
CLK : in std_logic; -- вход тактовой частоты.
Q : out std_logic_vector(7 downto 0) -- выход на светодиодики. Про резисторы не забываем.
);
end led;
architecture led_arch of led is
signal Q_reg : std_logic_vector(7 downto 0); -- объявляем сдвиговый регистр.
begin
process(CLK,Q_reg)
begin
if (Q_reg=0) then -- это просто начальная инициализация регистра...
Q_reg <= "00000001";
elsif (rising_edge(CLK)) then
Q_reg(7 downto 0) <= Q_reg(6 downto 0) & Q_reg(7); -- и погнали его разряды по кругу.
end if;
end process;
Q <= Q_reg;
end led_arch;
А вот так выглядит работа чипа уже в симуляторе:
http://savepic.org/6112632.png
Круто! Вроде все понятно пока. А сколько макроячеек занимает 8-битный регистр? Я так понимаю, в 3064 много не влезет?
Последние бегущие огоньки заняли суммарно 8 макроячеек.
Сейчас мы проект усложним, введем константы, типа ПЗУ. Размер вырастет.
В 3064 вообще немало влезает, корпусов так около 7-10 "средней" логики.
---------- Post added at 13:08 ---------- Previous post was at 12:49 ----------
А сейчас мы сделаем "Программируемые Огни" :)
Смотрим код, разбираем его, всё достаточно просто.
Здесь уже используется счетчик импульсов CNT, трехразрядный. Соответственно, он имеет восемь состояний. Сразу за счетчиком у нас стоИт дешифратор, который имеет также восемь "ячеек ПЗУ", содержимое которых определяет, что мы получим на выходных пинах.
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity led is
port(
CLK : in std_logic;
Q : out std_logic_vector(7 downto 0)
);
end led;
architecture led_arch of led is
signal CNT : std_logic_vector(2 downto 0);
signal Q_reg : std_logic_vector(7 downto 0);
begin
process(CLK,CNT)
begin
if (rising_edge(CLK)) then
CNT <= CNT+1;
case (CNT) is
when "000" => Q_reg <= "10000001";
when "001" => Q_reg <= "01000010";
when "010" => Q_reg <= "00100100";
when "011" => Q_reg <= "00011000";
when "100" => Q_reg <= "00000000";
when "101" => Q_reg <= "00011000";
when "110" => Q_reg <= "00100100";
when "111" => Q_reg <= "01000010";
end case;
end if;
end process;
Q <= Q_reg;
end led_arch;
А вот и диаграмма работы из симулятора:
http://savepic.org/6101372.png
Красиво? Можно изменять рисунок свечения по своему усмотрению.
Обратите внимание, я здесь и счетчик, и дешифратор засунул в один процесс, тактируемый клоком. Так вполне можно, и даже - лучше. И код читабельней, и вся схема работает полностью синхронно. Если вынести дешифратор из процесса и не тактировать его, то всё будет работать тоже. Но... Возможны проскакивания "иголок" на выходе дешифратора, поскольку счетчик все же не мгновенно меняет состояние своих разрядов.
Это проект занял всего 11 макроячеек.
Теперь переносим код программы в редактор или набиваем ручками:
И? :)
Почему lad?
Модуль называется led.
где-то ты неправильно имя прописал.
Насчет библиотеки unsigned - верно, надо искать, как она обзывается в ксилинксе, я писал квартусовское название. Надо выяснить этот вопрос, чтобы в будущем сразу учитывать.
Попробуй найти список резидентных библиотек, и по названию подобрать.
Если лишнюю подключить, но она не будет использоваться, это страшно?
Это совсем не страшно :)
Компилятор просто ею не воспользуется.
---------- Post added at 20:19 ---------- Previous post was at 20:15 ----------
так же не синтезируется, ругается на 33 строку, выдавая сообщение
Попробуй заменить двоичные трехразрядные числа после when на обычные, 0,1,2,3...7.
---------- Post added at 20:21 ---------- Previous post was at 20:19 ----------
Ты библиотеку свою arith подключил? Как в предыдущем примере.
Чтобы единица стала такого типа каким объявлен CNT, она и цвет сразу же изменила на такой же как "000"..."111" и "00000000"..."11111111", как я понял они стали одного типа.
В Квартусе это не требуется. Так помаленьку и выловим все нюансы.
Причем, как мне кажется, было бы кошернее написать не CNT + "1" а CNT + "001" чтобы соблюсти тогда уж и битовую размерность :)
На это она и ругалась как я понял, поэтому добавил строку:
when others => Q_reg <= "00000000";
Включаем хитрость и никаких строк не добавляем.
просто последнюю строчку
when "111" => Q_reg <= "01000010";
подправляем на
when others => Q_reg <= "01000010";
Ведь мы не компилятор, и прекрасно знаем, что останется всего лишь один возможный вариант. А компилятор пускай думает, что он всех умней.
---------- Post added at 23:09 ---------- Previous post was at 23:05 ----------
А как правильно обромлять если "0", "1", то их хавает, а уже на "2" и остальные строки ругается
А зачем ты кавычки ставил? Это просто десятичные числа, поэтому без кавычек.
Рекомендую все же проверить CNT + 1
Фишка в том, что так писать принято, и в Верилоге в том числе. Закрыть уже этот вопрос и забыть.
Ладно, до завтра!
Виктор, ушел в раздумья? :)
Или подкинуть тебе пару задачек для самостоятельной работы?
Давай попробуем несложное для начала...
Дано - входящий клок 14МГц.
Нужно получить частоты 7МГц, 3,5МГц.
Обязательное условие - длина импульсов выходных частот должна быть равна длине входящих импульсов 14МГц. Т.е. скважность должна быть не 50%, а 25% и 12,5% соответственно. Понятно задание?
http://savepic.org/6137803.png
8 y : out std_logic; -- Выход тактовой частоты (3.5 МГц).
Синтаксическая ошибка. В строчке, где описывается последний сигнал, после std_logic ставить точка_запятая не нужно. Убери, и всё заработает.
---------- Post added at 09:43 ---------- Previous post was at 08:19 ----------
Сама программа под спойлером.
Там всего три строчки кода. Попробуй самостоятельно написать, прежде чем заглядывать.
http://savepic.org/6127614.png
Подсказка - там один счетчик, и два элемента простой логики И :)
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity led is
port(
CLK : in std_logic;
CLK_7 : out std_logic;
CLK_35 : out std_logic
);
end led;
architecture led_arch of led is
signal CNT : std_logic_vector(1 downto 0);
begin
CNT <= CNT+1 when (falling_edge(CLK));
CLK_7 <= '1' when (CNT(0)='1' and CLK='1') else '0';
CLK_35 <= '1' when (CNT(1)='1' and CNT(0)='1' and CLK='1') else '0';
end led_arch;
А две строчки логики можно еще упростить до булевой алгебры, синтаксис это позволяет:
CLK_7 <= (CNT(0) and CLK);
CLK_35 <= (CNT(1) and CNT(0) and CLK);
Во-во, уже правильным путем идешь :)
Счетчик разумеется должен быть двухразрядным.
---------- Post added at 11:36 ---------- Previous post was at 11:27 ----------
Я долго смотрел и думал, а почему у тебя не стоит точка с запятой. Сбила эта скобочка на другой строчке.
Здесь можно для полноты понимания записать всё в строчку, так сказать Верилог-стайл:
port(Pin1: in std_logic; Pin2: out std_logic; Pin3: out std_logic);
В таком виде понятней, почему точка_запятая не нужна.
a <= not b;
---------- Post added at 12:16 ---------- Previous post was at 12:14 ----------
Только зачем ты "мыслишь триггерами", если есть готовые счетчики?
---------- Post added at 12:17 ---------- Previous post was at 12:16 ----------
У тебя девборда уже есть? Какая?
Инверсный выход - это тот же выход, но только через инвертор.
В принципе, его совсем не обязательно как-то обозначать и создавать, ты всегда можешь на элементе-потребителе просто сделать инверсный вход.
Тоесть, применительно к твоему коду, например, A <= not q1;
В языках синтеза нужно немножко перестраивать мозг, поначалу будешь действительно мыслить знакомыми микросхемами, но это муторно и тесно. А потом осознаёшь, что в действительности всё проще и просторней :)
Загляни под спойлер. Там код безо всяких ТМ2 и ЛА3, простой, как три копейки :)
Нет, пока нет, до реальной практике ещё очень далеко, тут бы в симуляторах, компиляторах, эмуляторах разобраться, чтобы правильно писать элементарный код...
Зря... Лучше сразу практиковаться на реальной железяке. Это не только приятней, но еще и стимул дополнительный не бросать дело.
---------- Post added at 13:11 ---------- Previous post was at 12:49 ----------
Моя девборда, с которой когда-то начинал :)
http://savepic.org/6106896.jpg
Да, что-то на крестале она ничего не разместила, только один выход обозначила y и тот на землю повесила.
Обычно когда цепи не используются - они оптимизируются в "удаление оных". Посему рецепт: завести цепи на вывода микросхемы. Тактовый сигнал на "глобальный тактовый" вход, остальные на "обычные вход/выход" микросхемы.
Хорошо идешь, только зачем субмодули делаешь? Я такого вообще никогда не видел :)
Действительно, намудрил. Убирай лишние архитектуры. В проекте должна быть одна.
---------- Post added at 18:20 ---------- Previous post was at 18:19 ----------
Вот эти 25% и 12,5%, всю малину портят.
А как ты хотел... Так и надо, чтобы тренировался.
Со временем может поставлю, но сейчас итак уже два программы, с которыми я ещё не разобрался, а ещё и в третью въезжать, я пока просто не готов, итак чердак съезжает от объёма информации.
Спасибо.
В крайних версиях ISE14.7 есть свой симулятор isim. И вообще если знание английского есть - то есть "куча" документации к среде разработки с примерами.
А нельзя ли как нибудь посмотреть как этот мой код работает, временные диаграммы, может Жень, ту у себя запустишь этот код и выложешь фотку как выше выкладывал
Ну, тут я и без симулятора вижу. что будет на выходе.
Две частоты. семь и три_с_половиной, но со скважностью 50%.
Условие пока не выполнено...
А я уже хотел сегодня начать с тобой писать видеогенератор для VGA :)
Ничего, подождем пока будешь готов.
Молодец!
Только вижу пока один недочет в q2, он будет неправильный маленько. Посмотри под спойлер :)
---------- Post added at 00:06 ---------- Previous post was at 00:02 ----------
И еще один нюансик.
Ты используешь сигнал clk для формирования q1 и q2, причем - когда он в единице.
Поэтому счетчик нужно тактировать не нарастающим фронтом, а спадающим, иначе будут паразитные "иголки" на выходе сигналов. Ну, или использовать clk, но только когда он в нуле.
---------- Post added at 00:08 ---------- Previous post was at 00:06 ----------
Плохо, что ты без симулятора...
Может, поставишь свежую версию проги? Или поставишь квартус, обучаться языку все равно на чем. Там сим встроенный.
---------- Post added at 00:14 ---------- Previous post was at 00:08 ----------
Вот что сейчас генерирует твой проект :
http://savepic.org/6130353.png
---------- Post added at 00:17 ---------- Previous post was at 00:14 ----------
а вот, если поменять на клок на входе счетчика на falling_edge :
http://savepic.org/6109873.png
---------- Post added at 00:17 ---------- Previous post was at 00:17 ----------
Уже лучше. q1 - правильный. как и требовалось. И видно. что q2 чего-то не хватает для счастья.... :)
Решил пока в перерывах установить среду разработки, то есть: Xilinx ISE Design Suite 12.4
Я свежие качаю с xilinx.com (там зарегистрировался и качаю...)
желательно, чтобы версии у нас были одинаковые, так мне кажется будет проще, я поставлю.
http://rutracker.org/forum/viewtopic.php?t=2365015
---------- Post added at 00:24 ---------- Previous post was at 00:22 ----------
Вот интересно, в чем тут всё же разница?
ты что имеешь ввиду?
На симе у тебя ширина импульсов на выходе не соответствует задаче.
А что ты там узрел? :)
С моим интернетом от туда выкачать не реально, связь разорвётся и всё гафкнется гарантированно и точно, а вот с торена, любой объём доступен, торрент моё всё.
Со временем тоже думаю себе скачать последнюю версию Xilinx ISE Design Suite, чтобы не отставать в развитии, но это гораздо позже.
Сейчас теория превыше всего.
там есть свой загрузчик, на яве написан. типа можно остановить загрузку а потом (завтра) продолжить.
Удачи.
Жень если уж и Altera тоже будет изучаться, то может и девборду присоветуешь, чтобы была полная идентичность, для удобства экспериментов?
У меня их шесть штук, не считая готовых устройств, куда тоже можно подоткнуться программатором... Самые толковые - uX-Reverse от MVV. Но можно и просто CPLD на макетке распаять для несложных устройств.
---------- Post added at 09:25 ---------- Previous post was at 09:23 ----------
Вот интересно, в чем тут всё же разница?
С утра разглядел, что ты фпихнул там дополнительный регистр для выравнивания фронтов во времени.
Мысля хорошая, но в качестве упражнения это пока сложновато :)
А вот про такую что скажешь DE0-Nano
Явный минус - наличие только SDRAM памяти. Для обучения лучше иметь на борту SRAM обыкновенную. Альтера DE-1 идеальный вариант, может можно где купить бэушку недорого.
---------- Post added at 11:19 ---------- Previous post was at 11:18 ----------
По моему микруха слишком ооочень навороченная.
Слишком навороченных не бывает :)
На u16-Reverse тоже стоит четвертый циклон.
Если не сложно, а можно с этими изменениями на временную диаграмму работы взглянуть
Сейчас глянем...
На ебее куча девборд разнообразных.
Мне вот этв понравилась - http://www.ebay.com/itm/Altera-Cyclone-IV-FPGA-Development-Board-EP4CE6E22C8N-20-days-promotion-/271434726780?pt=LH_DefaultDomain_0&hash=item3f32c53d7c
Но всё упирается в сумму, на которую ты расчитываешь.
---------- Post added at 11:28 ---------- Previous post was at 11:27 ----------
SD-RAM и EEPROM он в видео говорит.
Два. Только там СРАМ среди них нету :)
---------- Post added at 11:32 ---------- Previous post was at 11:28 ----------
http://savepic.org/6131430.png
Ну вот, всё как и требовалось :)
То есть можно сказать, что с последним примером я справился?
И последний мой код корректный и пример решён на 100%?
Будем считать что да :)
А там, глядишь, при хорошей девборде однажды и такое от тебя увидим:
http://savepic.org/6122234.jpg
Ты бы лучше написал точное название, например, 3...4 плат, с точными названиями и расположил их в списке там
Для тренировки можно самому спаять что-нибудь на макетке на базе CPLD.
Можно взять готовую, типа проекта "Марсоход", ссылку уже давал MVV.
Ну или вот (http://www.ebay.com/itm/Altera-MAX-II-EPM240-CPLD-Development-Board-Learning-Breadboard-Experiment-Board-/171361342866?pt=LH_DefaultDomain_0&hash=item27e5ee9592).
К ней уже есть и готовые проекты, чтобы их расковырять и разобраться с работой.
Но там не влезет ни один процессор, а это скучно...
Выше классом девбординки на FPGA. В принципе, в любую FPGA влезет не сильно навороченный компьютер. Особенно, если процессор 580ВМ80, он менее жручий по ресурсам, чем Z80.
Типичный пример вот это (http://www.ebay.com/itm/ALTERA-FPGA-Cyslonell-EP2C5T144-Minimum-System-Learning-Board-Development-Board-/200942146349?pt=LH_DefaultDomain_0&hash=item2ec915d32d). Но там кроме ПЛИСы ничего и нету... Всё остальное надо добавлять на макетках.
Если чуть поболее растрясти кошелек, то можно посмотреть на это, например.
Тут уже есть какая-никакая периферия, но нету готового выхода VGA или RCA. И нет оперативной памяти...
Вот это (http://www.ebay.com/itm/Altera-Cyclone-NIOS-II-FPGA-Board-EP2C8Q208C8N-USB-Blaster-JTAG-programmer-/261583725774?pt=LH_DefaultDomain_2&hash=item3ce79ae4ce)- уже полный вертолет. Там есть всё :) Но и цена тоже присутствует.
Ну и как вполне интересный вариант, проект u8-Reverse. Там лишних индикаторов и кнопок нету, но и цена ниже. Искать в нашей барахолке.
Посмотрел я и понял, мне нужен Херасик который делает Циклоны со Срамом.
Да... Но самый дешевый я нашел за 8500. Пичалька. Реверсе втрое дешевле.
А можно ссылочку, глянуть где, и как выглядит?
нашел здесь - http://radiohit.umi.ru/market/sredstva_otladki_i_razrabotki/de1/
Эта плата - вообще классика, с нее многие начинали, и на нее куча готовых конфигов.
И главное - на ней есть вся периферия, которая может понадобиться.
---------- Post added at 17:54 ---------- Previous post was at 17:52 ----------
может вот такую платку взять для начала
Цены - етить-колотить...
---------- Post added at 17:56 ---------- Previous post was at 17:54 ----------
Посмотри Марсоход (http://www.marsohod.org/index.php). Это не только платка, но и целый ресурс с форумом по этой плате, отправка почтой 200рэ.
т.к. ReVerSE оказался уж слишком простой и дешевой альтернативой как для начинающего
надо туда свистелок и перделок навтыкать, чтобы светилось и гудело. И цену вдвое поднять. Тогда начинающие ее заметят?
Хорошие платы у тебя получились. Только рекламы не хватает, ИМХО....
http://www.elitan.ru/price/index.php...ley=-1&mfg=all
http://www.chipdip.ru/product/de0-nano/
Вот этот я мог бы заказать хоть сегодня, хоть сейчас. Но в первом месте не заказывал ничего ни разу, то есть есть определённый гемор регистрироваться и т. д. Во втором дороговато.
В чипидипе цена мягко говоря высоковатая.
Два раза заказывал здесь (http://www.terraelectronica.ru/catalog.php?ID=584&search=TERASIC), все четко прислали.
---------- Post added at 22:04 ---------- Previous post was at 22:00 ----------
Конечно, все равно дорого. Дешевле через официального дилера. Один раз покупал через эфо, но сейчас там на складе de0-nano не видно.
Если хочешь совсем бюджетно спроси меня:) отсыплю и древностей от 7032-64 3128 3256 240 570 до еще актуального 2 циклона. хехе, с тебя только почтовые расходы хехе. на ибей сходи там есть все, если паять ломает.
хорошую контору тебе присоветовали. :)
Вы это мне? Если да, то спасибо не надо, я всё, мне необходимое куплю, проблем ни с чем нет.
Хозяин барин, если железка какая нужна стукни в личку, да и не только тебе, есть у меня запасы, лежат мертвым грузом. Поделюсь если надо для дела. Все выше перечисленное есть и еще тележка. :)
Марсоход - это CPLD - каменный век, не, я хочу если и применять, то FPGA.
По-моему, вы отстали от жизни. Уже давно есть Марсоход2 (http://marsohod.org/index.php/howtostart/marsohod2), а это третий циклон и программатор на борту (правда доморощенный, но драйвер для кактуса у них есть).
Viktor2312
Как вариант
http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,790&Prod=BASYS2
Есть и др. конторы...
[QUOTE=MVV;744001]А так ещё интересней :)
[CODE]process(clock,res) - реагируем на событие
begin
if (clock'event and clock='0') then
if res='0' then
del <= "00";
else
del <= del + 1;
end if;
end if;
end process;
:)
синзронизм я правильно понял?
дружище если ты так будешь "копипастить"то смысла то 0, с таким же успехом можно взять книжку Бибило П.Н, :)
VladimirS
11.10.2014, 11:24
Хозяин барин, если железка какая нужна стукни в личку, да и не только тебе, есть у меня запасы, лежат мертвым грузом. Поделюсь если надо для дела. Все выше перечисленное есть и еще тележка. :)
Добрый день!
Заинтересовало Ваше предложение, как связаться?
В этом деле (ПЛИС) я очень начинающий. Попытался что-то сделать на EPM7032SL, но когда доходит до программирования полный облом: не видит программа эту микросхему. Уже вроде все перепробовал - пишет сокет пустой. Может уже микросхему испортил ... Программа Max+plus 2.
. Форум глючит
VladimirS
Если выдернули с какого то девайса, то как правило используются все ноги мелкой плисины, и без "хитродорогогопоргаммера" ее не прошить.
Тут тема есть спецом ,
http://zx-pk.ru/showthread.php?t=9342
по железкам.
В личку кидайте, что хотите просто чип или сразу платку, самоделки я уже почти все раздал, но готовые платки еще должны быть. Сразу скажу, что 1 микруху я слать не буду, бонусы в комплекте
Viktor2312
я так и понял, извини за флуд, если нужны железки обращайся, пришлю.
касается не только плисинок
s_kosorev
11.10.2014, 17:05
На Verilog можно проще
reg [15:0] out;
reg [3:0] int;
always @ *
begin
out = 0;
out[in] = 1'b1;
end
А меня Verilog не интересует, и мне всё равно проще там будет или сложнее, мне главное в идеале изучить VHDL, мне не трудно забить лишних несколько строк, да, даже лишьних несколько сот или тысяч строк, главное, чтобы идеально работало и был понятен принцип.
зря, основной код пишется на нем, это я тебе как нуб нубу
Давайте без верилога в этой теме. Третий раз уже посты выпиливаю...
Я тоже пишу на верилоге, но VHDL один фиг роднее... Он как-то монументальней и паскалистее :)
s_kosorev
11.10.2014, 18:19
Не исключаю что на VHDL возможна такая запись, гуру VHDL приведите пример, этот код с натяжкой показывает как раз разницу между функциональным и поведенческим описанием
Давайте без верилога в этой теме. Третий раз уже посты выпиливаю...
Я тоже пишу на верилоге, но VHDL один фиг роднее... Он как-то монументальней и паскалистее :)
Согласен, твой подарок тебя ждет уже 2 года. :)
Жень, не проверишь ли мой пример, как там насчёт кода, всё ли корректно
Всё корректно, молодец!
Из мелких добавлений - в данном случае, поскольку y_out нигде более в проекте не используется. а просто выводится наружу, его можно не использовать, а результаты дешифрации сразу отдавать в y.
И второе, в списке чувствительности процесса y_out также излишен. Его состояние никак не влияет на работу процесса, тем более, что это сигнал выходной.
Образно говоря, в список чувствительности вносим те сигналы, которые входят в условия if и case. Больше ничего не надо.
---------- Post added at 18:47 ---------- Previous post was at 18:46 ----------
Согласен, твой подарок тебя ждет уже 2 года
Что это??? :)
Ругается так: Object y of mode OUT can not be read.
Правильно ругается. нафига ты у засунул в список чувствительности? Я же тебе только что разъяснял, что это не нужно.
---------- Post added at 20:02 ---------- Previous post was at 20:00 ----------
вот это скомпилируй:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.STD_LOGIC_arith.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;
entity dc_1 is
port(a : in std_logic_vector (3 downto 0); -- Вход (8421).
y : out std_logic_vector (15 downto 0)); -- Выход 16 выводов.
end entity dc_1;
architecture id_1 of dc_1 is -- Дешифратор 4:16.
begin
process (a)
begin
case a(3 downto 0) is
when "0000" => y <= "0000000000000001";
when "0001" => y <= "0000000000000010";
when "0010" => y <= "0000000000000100";
when "0011" => y <= "0000000000001000";
when "0100" => y <= "0000000000010000";
when "0101" => y <= "0000000000100000";
when "0110" => y <= "0000000001000000";
when "0111" => y <= "0000000010000000";
when "1000" => y <= "0000000100000000";
when "1001" => y <= "0000001000000000";
when "1010" => y <= "0000010000000000";
when "1011" => y <= "0000100000000000";
when "1100" => y <= "0001000000000000";
when "1101" => y <= "0010000000000000";
when "1110" => y <= "0100000000000000";
when others => y <= "1000000000000000";
end case;
end process;
end id_1;
process (это список чувствительности?)
Верно :)
Я тут хочу еще одну задачку подсунуть. просто она мне полчаса назад свалилась в реале, от нашего общего коллеги Микка_А :)
Вот рисунок, это по сути - программа в квартусе, но в схемном вводе.
http://savepic.org/6184247.png
Задача - перевести эту схемку в VHDL.
Способы могут быть разные, разумеется.
В дополнение к задаче - пины у ПЛИСы могут быть не только на вход и выход и вход/выход, а еще и "выход с возможностью чтения (buffer)".
Я этим воспользовался, хотя это совсем и необязательно.
Код на VHDL написан за десять минут, под спойлером.
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.STD_LOGIC_unsigned.ALL;
entity divider is
port(
CLK : in std_logic;
Q : buffer std_logic_vector(9 downto 0)
);
end divider;
architecture arch of divider is
signal CNT : std_logic_vector(1 downto 0);
begin
CNT <= CNT+1 when (rising_edge(CLK));
Q(0) <= (CNT(0) and CNT(1));
Q(1) <= not(Q(0));
Q(2) <= ((not CNT(0)) and CNT(1));
Q(3) <= not Q(2);
Q(4) <= (CNT(0) and (not CNT(1)));
Q(5) <= not(Q(4));
Q(6) <= ((not CNT(0)) and (not CNT(1)));
Q(7) <= not(Q(6));
Q(8) <= (Q(0) or Q(2));
Q(9) <= (Q(4) or Q(6));
end arch;
Viktor2312, всё правильно :)
Сейчас - вообще всё правильно.
---------- Post added at 21:54 ---------- Previous post was at 21:47 ----------
Саму мелкую логику (И, ИЛИ, НЕ) тоже не нужно как-либо отображать. Берешь выходы, и от них и пляшешь, вставляешь всю необходимую and-or-not прямо в булеву алгебру.
---------- Post added at 22:37 ---------- Previous post was at 21:54 ----------
История с этой задачей получила забавный поворот событий...
Вот диаграмма симуляции кода на VHDL:
http://savepic.org/6188380.png
И здесь - всё правильно, "бегущий огонь" плюс "бегущая тень" плюс еще два клока в противофазе.
Но когда запустили в симуляцию оригинал на схемном вводе....
http://savepic.org/6215007.png
Вот такая вот ботва... :)
Я, когда только начинал учиться работать с ПЛИСами, тоже сидел на "схематике".
Кстати, прошивка СМУК-2 сделана на нем.
Но тоже частенько натыкался на странную работу прошивки... Поэтому плюнул, растерел и ушел на VHDL. Потом уже, позже, разобрался с Verilog. И Скорпион-1024 для самодельной девборды писал на Верилоге, и проект СкорпЭво - тоже на верилоге. Но, первая любовь - самая чистая, VHDL мне нравится больше :)
Viktor2312, Вроде как всё похоже на правду :)
Ты у себя еще не поставил Кактус с симулятором?
---------- Post added at 11:27 ---------- Previous post was at 10:45 ----------
Только симуляция маленько бред выдает, проверь скобки приоритета и логику.
http://savepic.org/6165672.png
А ты убери лишние НЕ, станет проще :)
Оставь только И, а инверторы переставь на линии, на которых их небыло.
---------- Post added at 12:16 ---------- Previous post was at 12:13 ----------
Кстати, по диаграммам видно, что у тебя неправильно реализованы сигналы out_1_1 и out_1_2. И они тянут за собой мертвый out_or1
---------- Post added at 12:17 ---------- Previous post was at 12:16 ----------
А все остальное тикает как надо.
---------- Post added at 12:19 ---------- Previous post was at 12:17 ----------
Ладно, не будем тянуть кота за хвост, в строчке
out1_2a <= not cnt (0) and cnt (1);
надо просто поставить две скобки:
out1_2a <= not (cnt (0) and cnt (1));
и всё заработает правильно.
---------- Post added at 12:21 ---------- Previous post was at 12:19 ----------
http://savepic.org/6186147.png
Да, всё правильно, как один из вариантов.
Заглядывай :)
У меня давно блуждала мысль сделать ЮТ-88 на попуПЛИСной основе.
Т.е., берем настоящий 580ВМ80А, память статику 64кб, ПЗУ, индикаторы и CPLD.
Задача сама по себе копеечная, сел и сделал. Наверное хорошо, что я это так до сих пор и не сделал, ибо эту идею можно применить как темы следующих практических занятий :)
Для начала можно сделать на VHDL симуляцию 580ВК28.
По сути, там обычный двунаправленный буфер, направление которого определяется сигналами слова состояния ВМ80.
Какие биты за что отвечают - нам тоже известно.
Поэтому задача номер один - сделать дешифратор слова состояния в сигналы MEM_RD, MEM_WR, IO_RD, IO_WR.
Задачка уже по силам? :)
Я пока слабо представляю, что это за 580ВМ80 такой 64-хбитный :)
В реале они как-то попроще будут...
И как ты его собираешься реализовывать?
Частотомер на ПЛИС?
Для такой задачи более подходят микроконтроллеры...
Не знаю, надо что-то другое...
---------- Post added at 22:07 ---------- Previous post was at 21:58 ----------
Вот тебе задачка, "близкая к реальности".
Имеем входящий клок 20МГц.
Нужно синтезировать два синхросигнала, горизонтальной и вертикальной развертки VGA.
Вот тебе картинка с времянками сигнала:
http://savepic.org/6206519.png
Калькулятор виндовый тебе в помощь! Все решается прекрасно с его помощью :)
Как всегда, я выложу свой вариант сюда под спойлер.
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.STD_LOGIC_unsigned.ALL;
entity divider is
port(
CLK : in std_logic;
H_SYNC : out std_logic;
V_SYNC : out std_logic
);
end divider;
architecture syn of divider is
signal vcnt : std_logic_vector(9 downto 0);
signal hcnt : std_logic_vector(9 downto 0);
begin
process(CLK)
begin
if rising_edge(CLK) then
if (hcnt(9 downto 7)="101") then -- 640 точек дают 32мкс на частоте 20МГц
hcnt <= "0000000000";
if (vcnt="1000001100") then -- 524 строчки. 524*32мкс=16768мкс, что примерно 16,77мс.
vcnt <= "0000000000";
else
vcnt <= vcnt+1;
end if;
else
hcnt <= hcnt+1;
end if;
if (hcnt=520) then
H_SYNC <= '0';
elsif (hcnt=600) then
H_SYNC <= '1';
end if;
if (vcnt=490) then
V_SYNC <= '0';
elsif (vcnt=493) then
V_SYNC <= '1';
end if;
end if;
end process;
end syn;
http://savepic.org/6193220.png
---------- Post added at 22:55 ---------- Previous post was at 22:07 ----------
Я свой код выложил под спойлер. Диаграмма прилагается, времянки там соответствуют требуемым (плюс/минус чуть-чуть, допускается).
---------- Post added at 23:21 ---------- Previous post was at 22:55 ----------
Добавил немножко кода, чтобы проверить проект "вживую".
http://savepic.org/6222941.jpg
---------- Post added at 23:34 ---------- Previous post was at 23:21 ----------
http://savepic.org/6162527.jpg
Для начала тебе нужны два счетчика, горизонтальный и вертикальный.
Горизонтальный должен считать такты на всю строку, включая синхро и гашение.
Полный такт - 31,77мкс (32 округленно).
20МГц = 0,00000005 сек/точку. = 0,05мкс/точку.
Нам нужно 32мкс на строку.
Значит, точек в строке нужно 32/0,05=640.
Делаем счетчик до 640, чтобы потом сбрасывался в ноль.
Вертикальный счетчик. 16784мкс на один фрейм. Строчка занимает 32 мкс.
Итого - 16784/32=524 строчки. Лепим счетчик на 524.
Счетчики тикают, по клоку увеличивается горизонтальный, по сбросу горизонтального в ноль - увеличивается вертикальный.
А тем временем проверяется содержимое счетчиков и в нужные моменты дергаем сигналы синхронизации вниз-вверх. Вот и вся кухня.
Не, никуда не годится...
Наверное надо было начать со счетчиков вообще, а не со сразу непонятной задачи.
Давай разобьем на этапы.
Как сделать счетчик, например, до 260?
Сколько разрядов счетчика нам потребуется, чтобы досчитать до этого числа?
Помним, что байт (8 бит) вмещает в себя максимум 256 комбинаций.
Следовательно, чтобы считать в диапазоне выше 256 импульсов, нужно добавить еще один разряд. Теперь мы сможем считать до 511, а количество состояний счетчика - 512.
Объявляем сигнал - signal counter: std_logic_vector(8 downto 0);
После объявления типа std_logic_vector мы пишем количество двоичных разрядов сигнала (счетчика, шины, регистра...) и их логическое размещение.
Здесь могут быть два варианта - 8 downto 0 и 0 upto 8.
Первый вариант означает, что левым (старшим) разрядом при операциях с сигналом будет старший бит. Так оно обычно всегда и делается, это просто логично. Ведь нулевой разряд у нас всегда находится справа (младший). Но для особых случаев можно воспользоваться и вторым вариантом, развернув байт.
Далее...
Как нам сделать, чтобы счетчик, дотикав до нужного числа, сбросился и начал отсчет снова?
На рассыпной логике для этой цели к счетчикам типа ИЕ5/ИЕ7 добавляют мелкологику. Здесь происходит аналогично.
Логика постоянно мониторит состояние битов счетчика и по совпадению с заданным числом дает сигнал сброса на счетчик.
Для нашего случая можно сделать например так, чтобы сброс был на 260:
process(CLK)
if (rising_edge(CLK)) then --всё должно быть синхронно!
if (counter=259) then --нужная цифра минус один, ведь 0 - тоже входит в счет
counter <= "000000000"; --в данном случае кактус не любит десятичные числа
else
counter <= counter + 1;
end if;
end if;
end process;
А если нам нужно, как в случае с синхросигналами, запустить последовательно два счетчика?
Чуть-чуть напрягаем мозг, и соображаем, что конструкцию второго счетчика проще всего воткнуть прямо в тот же процесс, где сидит и первый. Ведь там уже есть готовый момент, когда первый счетчик уходит в ноль? Да, это строчка counter <= "000000000";
Поэтому прямо под ней мы может вкошачить второй счетчик. Во второй - третий, и так до бесконечности :)
Давай, второй счетчик у нас будет до... 33, например.
Считаем необходимую разрядность - 6. Значит, нужны разряды от 0 до 5.
Описываем сигнал и - поехали...
process(CLK)
if (rising_edge(CLK)) then
if (counter=259) then
counter <= "000000000";
if (counter1=33) then
counter1 <= "000000";
else
counter1 <= counter1 + 1;
end if;
else
counter <= counter + 1;
end if;
end if;
end process;
---------- Post added at 09:28 ---------- Previous post was at 09:04 ----------
А как нам определить, когда счетчик достиг нужного значения, чтобы соответствующим образом отреагировать? Просто смотрим, сколько он там насчитал, состояние счетчика всегда доступно.
Но и тут есть нюанс. ПЛИС - быстра, но и в ней после каждого импульса разряды устаканиваются не моментально. Если просто сделать типа
А <= '1' when (counter=100) else '0';
то возможно появление "иголок" в сигнале А.
Тут можно использовать принцип, что к следующему сигналу клока все разряды счетчика уже успокоились и показывают правильное значение.
Поэтому можно или создать регистр, разрядностью равный счетчику, и по фронту клока записывать в него текущее состояние счетчика. Тогда можно обычной логикой следить за состоянием счета.
Или можно смотреть счет в процессе, который тактируется тем же клоком, что и счетчик.
process(CLK)
if (rising_edge(CLK)) then
if (counter=259) then
counter <= "000000000";
else
counter <= counter + 1;
end if;
if (counter=100) then
A <= '1';
else
A <= '0';
end if;
end if;
end process;
Вот один из вариантов. Можно делать это немножко по разному.
---------- Post added at 09:35 ---------- Previous post was at 09:28 ----------
А почему 524, а не 640?
потому что время между кадровыми синхроимпульсами равно 16,784мс по документации. А обеспечить это время мы можем только количеством строк. Каждая строка выводится на экран монитора за 32 микросекунды.
И если мы выведем 524 строки по 32мкс каждая, то мы и получим эти несчастные 16,7миллисекунд на один фрейм (экран).
только вот почему-то везде пишут (0 to 8) не upto.
Допустимо оба варианта.
---------- Post added at 13:20 ---------- Previous post was at 13:17 ----------
Я бы заменил на:
Да, но не сейчас, пускай в голове пока оседает необходимый минимум.
И у меня, например, привычка обходиться без others, поскольку иногда требуется какой-либо битик поднять.
Но это дело сугубо личное :)
---------- Post added at 13:23 ---------- Previous post was at 13:20 ----------
По поводу std_logic_vector, запись имеет вид '1' и '0' для единичного вектора, а вот вектора 2х и более разрядов по умолчанию НЕ МОГУТ принимать десятичные значения. Только HEX или BIN.
Просто может быть непривычно, что сравнивать значения в многоразрядных сигналах можно с десятичными цифрами, а вот присваивать - ни в коем разе.
---------- Post added at 13:28 ---------- Previous post was at 13:23 ----------
Не понял если честно, а что означает выражение в скобочках, как бы все значения равные двоичному нулю, и для чего такая сложность
Это выражение означает, что всем разрядам присваивается '0'.
По сути это тоже самое, и даже выглядит солидней. Но это - дело вкуса.
Частота кварца должна быть больше, мне кажется.
Да, классическая 24.5 или 25 вроде, на материнках можно увидеть старых.
Что-то у меня как-то не получается с 16 784 ms, получается 16768 ms, это не сильно страшно? А то вместо 31,77мкс - 32 мкс, вместо 16 784 ms - 16 768 ms.
Ничего страшного нет. Тем более, у нас учебный пример, который тем не менее работает :)
сигнал А будет равен лог. 1 в течении одного такта
Да, конечно только один такт.
А кто тебе мешает вместо else написать elsif и написать второе условие для отключения?
Типа такого:
Да, правильно.
1. Именно FPGA? Самый маленький - EP1C3T100C8. Не, 155ТМ8 туда не влезет... Но туда влезает Орион-128 с парой десятков корпусов, с процессором Z80, горой еще всякого разного и чуть-чуть не умещается AY-2910 поверх всей этой кучи....... :)
2. Дребезг устраняется программно, самим кодом в ПЛИС. Ну или лепи переключающие кнопки с триггерами, дабы делать это внешне. Проще, наверное, микроконтроллер снаружи прикрутить, чтобы он дребезг устранял. Хотя... Это снова код писать, теперь уже для МК :)
---------- Post added at 23:24 ---------- Previous post was at 23:20 ----------
Кстати, напиши тренировки ради код антидребезга для ПЛИС.
Алгоритм, например, такой - процесс, тактируемый клоком. В нем слушаем входной пин. Как только уровень изменился, по клоку начинает расти счетчик. Если сигнал на входе пропал - счетчик обнуляется. Если же он набрал десятка три импульсов - считать, что кнопа нажата выдачей соответствующего сигнала.
Вот и вся премудрость :)
MVV, я уже неделю из-под девборды не вылезаю :)
Viktor2312, для нее потребуется генератор, конфпзу не меньше EPCS1, стабилизаторы линейные на 3,3 и 1,5 вольт. Ну и разъем для бластера. Это минимум для работы.
У меня такая платка с этим циклоном размером со спичечный коробок. Макетку купи, TQFP-0,5 х 100.
---------- Post added at 23:58 ---------- Previous post was at 23:56 ----------
MVV, не делай вид, что ты не читал названия темы :)
ну хочет человек на плисе собрать то, что делается на МК за полбакса... Не мешай ему :)
А есть какие нибудь более точные названия для генератора и для табилизаторов, я видел какой-то стабилизатор, мелкая микросхемка, так она там несколько напряжений выдавала, как вроде 0,9В, 1,5В, 2,4В, 3,3В как вроде, если память не изменяет.
Не, типы можно брать любые. ПЛИСа кушает немного, 1,5 вольта ей надо для питания ядра (VCCINT) и модуля PLL (VCCA_PLL1). Можно мелкий стабик подобрать. Питание 3,3 идет на периферию, питание пинов образно говоря (VCCIO).
И там, и там хорошо подходят стабики серии 1117 в корпусе... Блин, мелкие такие, миллиметров 6х6 с двумя лапами и задней стенкой-площадкой под пайку.
Генератор - любой, лишь бы 3.3 вольта сигнал выдавал. Можно в DIP, можно MLF, можно как хочешь, хоть ЛН1 с кварцем.
Сигнал заводить на вход CLK0 (10 пин).
Про подключение всех тряхомудии для программирования самого циклона и его конфПЗУ прочитай в статье про конфпзу, ссылка на нее в первом посте есть :)
Там несколько резисторов понадобится. Ну и кучка конденсаторов 0.1 для питания.
---------- Post added at 09:09 ---------- Previous post was at 09:07 ----------
EPCS1SI8N, Config.device, Ind, SO8, PBfree
Вот такая подойдёт?
Подойдет. Можно также EPCS4, у нее объем в четыре раза больше, подойдет и для более жирных циклонов. Но она подороже.
---------- Post added at 09:10 ---------- Previous post was at 09:09 ----------
И ещё нюансик, ничего, что на конце будет буква N. EP1C3T100C8N
Вроде как это означает PBfree, тоесть нам пофигу абсолютно. Они все сейчас с индексом N идут.
---------- Post added at 09:13 ---------- Previous post was at 09:10 ----------
Коммутатор входов который я хочу замутить, вот его функциональная схема:
В данном случае тебе схема антидребезга и не нужна вовсе...
Без нажатия кнопы импульсы все равно не пойдут, поэтому любую помеху на входе можно достоверно считать нажатием. Но - хозяин-барин :)
Вот Жень глянь, будет ли такой код работать
Будет. Можно было и попроще:
q <= d when (rising_edge(clk));
А то, что-то на 1,5 В не могу найти я источника опорного напряжения
Самые обычные стабы. (http://lib.tixer.ru/datasheets/ac/ic/suppl/line/LM1117.pdf) Для 1,5 вольта нужно купить настраиваемый, LM1117-ADJ. К нему цепляешь два резистора (калькуляторы в интернетах) и получаешь любое напряжение на выходе.
И ещё нюанс, а генератор, на какую частоту должен быть или с каким диапазоном выходных частот можно применять?
Обычно указывается максимальная частота... Не знаю, но по сути - любая. Ты все равно можешь синтезатором частот получить любую. Ну, поставь мегагерц на 10...
Вот такой пойдёт: KXО-97 20МГц
Пойдет, конечно.
не знаю правильно ли подсчитал
Уже на плате проверишь, сколько он там выдает.
А толку-то... Собирай девборду, тогда уже и можно браться за проекты посерьезней.
Разъем для программатора есть?
Разъем питания?
Чип-конденсаторы на 0,1мкф есть? Штук 10-15.
Резисторы, 100е...1к...10к?
---------- Post added at 13:22 ---------- Previous post was at 13:11 ----------
Давай я тебе письмом отправлю чипик CPLD EPM3064ATC44? Потренируешься на ней.
Видеогенератор, причем даже с генерацией самой картинки, которую ты видел, легко влезает туда, и еще половина свободна остается.
6). KXO-97 20.0 MHz Geyer, генератор, кварцевый. - 4 шт.
7). 0.062Вт 0402 1 кОм, 1%, Чип резистор (SMD) - 100 шт.
8). 0.062Вт 0402 100 Ом, 5%, Чип резистор (SMD) - 100 шт.
ещё добавил до кучи:
9). 0.062Вт 0402 10 кОм, 1%, Чип резистор (SMD) - 100 шт.
хорошо, что у тебя хорошее зрение и твердая рука.:v2_dizzy_botan:
http://katalog.we-online.de/pbs/datasheet/82551500.pdf
http://savepic.org/6230507.jpghttp://savepic.org/6285802.jpg
ЛУТ + МГТФ, куда уж без него.. Зато - девбординка на EPM3064. Даже с генератором! :)
---------- Post added at 10:57 ---------- Previous post was at 09:55 ----------
entity anty_t is
port(in_0 : std_logic;
clk_1 : std_logic;
in_c0 : std_logic);
end entity anti_t;
Где здесь входные и выходные пины?
---------- Post added at 10:59 ---------- Previous post was at 10:57 ----------
process (clk_1)
begin
if (rising_edge(clk_1)) then
if (int_1='1') then
bus <= bus + 1;
end if;
end if;
end process;
У тебя bus просто увеличивается и всё?
balu_dark
16.10.2014, 11:14
А можно файлик платки ?
А можно файлик платки ?
http://savepic.ru/6065975m.gif (http://savepic.ru/6065975.htm)
Файлик я по неосторожности сделал в "типа шестом" sprint layoute. Была такая дурацкая версия. Поэтому расширение файла - .lay6
И никак не перенести в нормальнай лай...
Вот файлик (https://yadi.sk/d/1Xb6Xvmwc4ZHt).
Там уже исправлены несколько ошибок, которые есть на платке на фото.
Описывать проще как многоразрядные входы-выходы:
In : in std_logic_vector(9 downto 0)
А обращаться к ним можно так - In(3), In(7)....
MVV, я здесь время с корыстью вообще никогда не провожу.
А что, обучение ты будешь оплачивать? Или уже сразу преподавать там будешь? :)
shurik-ua
16.10.2014, 13:10
При работе с ПЛИС рано или поздно нужно будет знакомиться с конечными автоматами (state mashine), думаю на примере антидребезга можно и ознакомиться с этой парадигмой программирования.
В принципе там ничего сложного и вкратце работу алгоритма антидребезга на конечном автомате можно описать пимерно так:
1. есть несколько устойчивых состояний - в данном случае их два.
2. для перехода из одного состояния в другое должны опрашиваться какие-то внешние события, либо соблюдение условий.
Под спойлером готовый фрагмент программы антидребезга, но попробуй сначала сам что-нибудь написать)
signal input: std_logic;
signal output: std_logic;
signal state: std_logic:=0;
signal counter: std_logic_vector (7 downto0):= '00000000';
process (clk,input,state)
if rising_edge(clk) then
if state = '0' then
if input='1' then
state <='1' ;
output<='1';
endif
else
counter <= counter +1;
if counter = '11111111' then
output<='0';
state<='0';
endif;
endif;
end if;
end process;
Можно конечно сам сигнал state использовать как output, но для наглядности ввёл его отдельно.
process(CLK,In_put,cnt)
begin
if (rising_edge(CLK)) then
if (In_put = x"3F") then -- ни одна из десяти кнопок не нажата, везде высокий
cnt <= "0000000000";
elsif (cnt /= 255) then -- счет до 255, и на этом тормозимся.
cnt <= cnt+1;
end if;
if (cnt = 255) then
Out_put <= not In_put; -- если дотикало, то на выход - единица в разр. нажатой кнопы.
end if;
end if;
end process;
Не? такой вариант не годится?
---------- Post added at 15:26 ---------- Previous post was at 15:19 ----------
Почитав топик, сложилось мнение, что ты преподаешь там
Не, я еще слишком маленький и глупый. Просто делюсь тем, чему сам научился. В том числе и благодаря тебе :)
shurik-ua
16.10.2014, 15:28
У вас код антидребезга нерабочий.
Поясню:
1. код, который в процессе просто увеличивает счётчик когда на вход поступает '1', а так как '1' на входе будет появляться хаотично в течение небольшого промежутка времени, то и счетчик будет увеличиваться так же неравномерно - больше тот код ничего другого не делает.
2. int1_0 будет все время в единице, кроме одного периода тактовой когда счётчик будет в нулях.
в общем код нерабочий - я уже запутался - там вход сканируется только 1 период клока, а 255 клоков никак не влияет на результат.
смысл антидребезга немного по другому устроен:
1. ждём на входе '1' - если да идём к п.2
2. 256 (или сколько надо) периодов клока безразличны ко входу, после чего переходим к п.1.
У вас код антидребезга нерабочий
К моему последнему варианту тоже относится?
---------- Post added at 15:43 ---------- Previous post was at 15:41 ----------
смысл антидребезга немного по другому устроен
Пораскинув мозгами, да... Если проскочит ноль при зафиксированном уже нажатии, то всё начнется заново, со сброса в ноль выходного сигнала...
Надо отлавливать и нажатие, и отпускание.
Антидребезг на VHDL
слово "какафонический" убило...... :)
Ну да, VHDL проще русского языка...
Советую еще раз глянуть на следующие статьи:
Подавления дребезга механических контактов (http://www.radioman.ru/teoria/1/mop_drebezg.php)
Изучение явления «дребезг контактов» и метод избавления от него (http://habrahabr.ru/post/133871/)
Подавление дребезга контактов (http://www.labfor.ru/guidance/digital-leso2/debounce)
Антидребезг на VHDL (http://logways.ru/2011/08/22/antitwitter-vhdl/)
Вставить антидребезг на кнопку vhdl (http://radiokot.ru/forum/viewtopic.php?f=60&t=100274&sid=6342260520efa41e4a24724aa8122ad1)
Виктор, ты бы хоть источники указывал... Или названия сигналов свои придумывал :)
shurik-ua
16.10.2014, 16:36
Вот с того, что вы уже запутались и нужно было начинать.
Да погорячился - код работает - но имхо запутанный он како-то - прям VHDL обфускация )
Интересно, а в if написанный так:
if (in_c="0000000001") then
cod <= "0001";
else
...
Можно ли добавить следующее:
if (in_c="0000000001") then
cod <= "0001";
t <= t + 1;
else
...
if a=b then
c:=a;
elsif b<c then
d:=b;
b:=c;
else
do_it;
end if;
If statements may be used to specify conditional assignments or state transitions in a finite state machine:
case READ_CPU_STATE is
when WAITING =>
if CPU_DATA_VALID = '1' then
CPU_DATA_READ <= '1';
READ_CPU_STATE <= DATA1;
end if;
when DATA1 =>
-- other branches of the case statement
end case;
Learning By Example Using VHDL Advanced Digital Design With a Nexys 2 FPGA Board
http://dl.rutracker.org/forum/dl.php?t=3701607
Digital Design Using Diligilent FPGA Boards VHDL/Active-HDL Edition
http://dl.rutracker.org/forum/dl.php?t=3701599
Тут я так понял нет сигнала разрешения начала счёта.
Здрасти....
Нажатие любой кнопы сделает вход не 3FF, а другое значение, счет и запустится.
---------- Post added at 23:04 ---------- Previous post was at 23:03 ----------
/= что означает этот двойной литерал, я его пока не изучал и не применял.
Немножко логики применим, и..... НЕ РАВНО.
Виктор, а если нажаты две кнопки одновременно?
А если расчет делается только на одну нажатую кнопу, то нафига столько антидребезгов?
Если у тебя существует необходимость обрабатывать неодиночные нажатия, то смысл в шифраторе теряется, он не может хранить код сразу нескольких кнопок.
Поэтому, нужно просто определиться, будут одиночные нажатия, и тогда ставь шифратор, и одиночный антидребезг. Или убирай шифратор и ставь кучу антидребезга.
shurik-ua
17.10.2014, 12:35
Вы наверное говорите о приоритетном шифраторе:
http://gorgeous-karnaugh.com/ru/uchebnik/practical-usage/4-to-2-prioritetniy-shifrator.html
о приоритетном шифраторе
Скорее о шифраторе К1533ИВ1(74148 (http://www.ti.com/lit/ds/symlink/sn74ls148.pdf))
http://www.ralfzimmermann.de/ttl_ic/74148.gif
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity sn74ls148 is
port(i:in std_logic_vector(7 downto 0);
s:in std_logic;
ys,yex:out std_logic;
y:out std_logic_vector(2 downto 0));
end sn74ls148;
architecture behav of sn74ls148 is
begin
ys<=NOT((NOT(s)) and ( i(0)) and ( i(1))and ( i(2))and ( i(3))and ( i(4))and ( i(5))and ( i(6))and ( i(7)));
yex<=NOT((NOT(s)) and ((NOT i(0)) or (NOT i(1)) or (NOT i(2)) or (NOT i(3)) or (NOT i(4)) or (NOT i(5)) or (NOT i(6)) or (NOT i(7))));
process(i,s)
begin
if(s='0')then
if(i(0)='0')then
y<="000";
elsif (i(1)='0')then
y<="001";
elsif (i(2)='0')then
y<="010";
elsif (i(3)='0')then
y<="011";
elsif (i(4)='0')then
y<="100";
elsif (i(5)='0')then
y<="101";
elsif (i(6)='0')then
y<="110";
elsif (i(7)='0')then
y<="111";
else
y<="XXX";
end if;
end if;
end process;
end behav;
entity HW3Q1_148_Decoder is
Port ( EI : in STD_LOGIC;
Input : in STD_LOGIC_VECTOR (7 downto 0);
A : out STD_LOGIC_VECTOR (2 downto 0);
GS : out STD_LOGIC;
EO : out STD_LOGIC);
end HW3Q1_148_Decoder;
architecture Behavioral of HW3Q1_148_Decoder is
begin
A <= "111" when EI='1' else
"111" when EI&Input="011111111" else
"000" when EI&Input="011111110" else
"001" when EI&Input="011111101" else
"010" when EI&Input="011111011" else
"011" when EI&Input="011110111" else
"100" when EI&Input="011101111" else
"101" when EI&Input="011011111" else
"110" when EI&Input="010111111" else
"111";
EO <= '0' when EI='0' and Input="11111111" else
'1';
GS <= '1' when EI='1' or Input="11111111" else
'0';
end Behavioral;
Viktor2312, вы я так понял делаете связку типа:
кнопка(9..0) -> блок антидребезга(9..0) -> приоритетный шифратор(10 to 4) ИВ1 -> синхронный регистр хранения (4 bit) ИР16 -> дешифратор (4 to 10) ИД1 -> блок реле(9..10) с индикацией
Уже и не спрашиваю наф вам для этого FPGA а не CPLD и МК :)
shurik-ua
17.10.2014, 13:43
Тогда Евгений прав - необходимости в 10 модулях антидребезга нет совсем, достаточно одного.
shurik-ua
17.10.2014, 15:10
Круто, подключим одну кнопочку к нему, а остальные будут при нажатии срать?
Нет - создаём сигнал который ORится со всеми кнопками, к нему применяем антидребезг, а потом выход антидребезга ORим с каждой кнопкой отдельно.
---------- Post added at 13:56 ---------- Previous post was at 13:24 ----------
Хотя нет - немножко неправильно - нужно подумать )
---------- Post added at 14:10 ---------- Previous post was at 13:56 ----------
примерно так:
1. создаём сигнал any_key который регистрирует факт нажатия любой кнопки - т.е. функция OR ко всем входам.
2. когда any_key = '1' запускаем счётчик (до 256 например)
3. вход каждой кнопки подключен к S-входу RS тригерра (у каждой кнопки свой триггер)
4. все R входы триггеров соединены с инвертированным выходом счётчика.
выигрыш в том что счётчик один а не десять, что значительно уменьшит занимаемые ресурсы.
Вроде должно работать )
shurik-ua
17.10.2014, 15:42
Для OR нужны сигналы, а не набор помех, от дребезга контактов.
Я думаю нет )
Но пусть нас рассудят остальные участники форума.
Для OR нужны сигналы, а не набор помех, от дребезга контактов.
Не нравится OR - воспользуйся XOR. Если хотя-бы одна клавиша "дребезжит", получишь характерный сигнал на выходе XOR.
shurik-ua
17.10.2014, 15:54
Не нравится OR - воспользуйся XOR. Если хотя-бы одна клавиша "дребезжит", получишь характерный сигнал на выходе XOR.
Лучше всё же OR - вдруг завтра изобретут кнопки со встроенным антидребезгом, и если нажать одновременно чётное число кнопок то сигнал any_key так и останется в нуле (на правах шутки).
Дело не в функции OR а к чему её применять - я всё же думаю что к самим входам )
В общим код синтезировала, ругаться не стала, на кристале расположила, временные диаграммы смотреть теперь нужно...
http://img-fotki.yandex.ru/get/5508/48644933.2b/0_e8a9a_c16ff443_L.png (http://fotki.yandex.ru/users/lpiti/view/952986)
switch_put
забавно, код ты пишешь для alter, а юзаешь софт от xilinx :v2_dizzy_step:
Я пишу код на VHDL, а ему всё равно Altera, Xilinx или ещё какая фирма производитель.
ммм ....ээээ... мммм...нудануда.
Vladimir_S
21.10.2014, 14:03
Viktor2312, Это ByteBlasterMV.
Vladimir_S
21.10.2014, 14:05
Кстати, не помню где прочитал, но советуют ставить 74НС244. Вроде как работает лучше нашей АП5.
Vladimir_S
21.10.2014, 15:16
можно будет поэкспериментировать.
Я прочитал, что именно эксперименты показали, что 74НС244 лучше работают в байтбластере. Причем именно 74НС244.
---------- Post added at 20:16 ---------- Previous post was at 19:52 ----------
Ладно, спрошу здесь. Есть у меня USB Blaster. Знатоки, подскажите где взять для него дрова под XP?
Знатоки, подскажите где взять для него дрова под XP?
В квартусе вроде папка drivers есть.
Наборы "юного синклериста" уезжают своим новым хозяевам, для самых жаждущих познать и стать "поГроммистом" verilog, vhdl,ahdl -заказ подарков от деда мороза доступен по 24.10.2014. 12:00 MSK
всем удачи.
http://s020.radikal.ru/i703/1410/b0/d5698008c70d.jpg
http://zx-pk.ru/showpost.php?p=744068&postcount=89
Totem, а у тебя не бегают случаем первые циклоны?
Totem, а у тебя не бегают случаем первые циклоны?
1е я отдал скопом, 3 штуки, где ты раньше был? 2 еще есть.
Вот этих EP1C3T144C8N в китайском радиомагазине полно :)
из магаза долго ждать, Дед Мороз рядом, тебе дружище, что "отгрузить"? пока в мешочке есть подарки?
2 еще есть.
Можно присоседиться? :)
И если есть - штучка МАХ2, типа 240 или 570, я с ними еще дел не имел...
КонфПЗУ нет свободных?
Можно присоседиться? :)
И если есть - штучка МАХ2, типа 240 или 570, я с ними еще дел не имел...
КонфПЗУ нет свободных?
Думаю найдет снегурочка, в волшебной коробочке.
В личке написал.
Интересно, а Виктор уже получил свой подарок? Неделю как отправил... Забанили его невовремя...
shurik-ua
24.10.2014, 12:03
опять забанили чтоли ? ) за что
Во хмелю невоздержан :v2_dizzy_king:
Так, пока снегура ищет, в закромах флешки для
Ewgeny7, есть возможность упаковать еще, подарочков. Дедушке Морозу потом будет не досуг, определяйтесь до 16:00 MSK, кому железяк потребно.
Давайте что ли чуток продолжим практику.
Очередное задание. Делаем ШИМ (PWM).
Просто я параллельно с этой темой веду переписку с Миккой, там как раз эта темя затрагивалась.
Что такое ШИМ - вроде как все железячники должны знать.
Это способ "оформить" цифровой сигнал в подобие аналогового. Практическое применение - синтез аналогового уровня, или звука, или руление электромотором или светодиодом.
Принцип основан на изменении скважности выходящей с генератора ШИМ частоты. Чем больше соотношение "единицы" к "нулю", тем больше аналоговый уровень на RC (LC) фильтре перед потребителем сигнала. Естесственно, частота ШИМ обычно используется достаточно высокая, чтобы эффективней сгладить пульсации и отрезать высокочастотную составляющую фильтром.
Для светодиодиков, подключенных к ШИМ, в принципе достаточно поставить сглаживающий конденсатор параллельно лапам светика.
Давайте придумаем и изобразим ШИМ.
Техзадание.
Вход - клок, 1 мегагерц.
Выход - сигнал ШИМ, дискретность - 256 импульсов.
Уровень заполнения пока возьмем константой от балды, например - 63.
Т.е. мы должны получить сигнал ШИМ, где 63 кванта времени будет единица на выходе, а оставшиеся 256-63=193 - ноль.
Когда это будет сделано, привинтите восемь кнопочек на вход альтерки, чтобы уже можно было управлять ШИМом.
Готовый код, как обычно, будет под спойлером.
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity test is
port(
clk : in std_logic;
q : out std_logic
);
end test;
architecture arch of test is
signal cnt : std_logic_vector(7 downto 0);
begin
process(clk)
begin
if (rising_edge(clk)) then
if (cnt=0) then
q <= '1';
elsif (cnt=63) then
q <= '0';
end if;
cnt <= cnt+1;
end if;
end process;
end arch;
http://savepic.org/6341015.png
vfiuchcikicshuusrch
24.10.2014, 13:12
скоро с вами буду учиться)
Ewgeny7, было бы круто, если бы книжку написал какую-нибудь по этому делу :)
Заодно можно посчитать, какое аналоговое напряжение будет на выходе плиски после фильтрации.
Во сколько раз уменьшится уровень сигнала:
256/63=4,063
Примем, что CPLD у нас пятивольтовая, и условно примем, что активная единица на выходе тоже равна 5,0 вольт.
Тогда при текущей реализации ШИМ мы получаем аналоговый сигнал 5,0/4,063=1,23 вольт.
---------- Post added at 13:23 ---------- Previous post was at 13:20 ----------
если бы книжку написал какую-нибудь по этому делу
Я писал несколько "типа методичек", на книжку у меня пороха не хватит, люблю перескакивать с одного хобби на другое. Да и сам я "чайник", чтобы серьезным вещам учить :) Зато мне никогда не приедается и не наскучивает одно занятие :)
vfiuchcikicshuusrch
24.10.2014, 13:55
люблю перескакивать с одного хобби на другое. Да и сам я "чайник", чтобы серьезным вещам учить Зато мне никогда не приедается и не наскучивает одно занятие
я так же часто перескакиваю. но заставляю себя доделывать дела и не бросать их...
а ссылки есть на методички ?
Ну, наприме вот (http://www.zx.pk.ru/showpost.php?p=364990&postcount=704). Только сейчас я бы уже немножко по-другому бы все сделал.
Прошу прошения за задержку возникла проблема с упаковкой :) точнее
с отсутствием оной.
Женя еще чего может? или убрать чего?:)
http://s50.radikal.ru/i127/1410/27/95bbfcac6037.jpg
Это едет в Симферополь. вопросы те же.
http://s019.radikal.ru/i625/1410/44/11e8fbbc13e0.jpg
vfiuchcikicshuusrch
25.10.2014, 14:02
а я уже макетку собрал... жду :)
без косяков конечно не получилось..
вместо 74hc04 поставил hc14 .. и теперь вместо 20мгц получается 48)))
логика чувствительная очень.. нужно наверно перепаять на LS04 (их полно в отличии от HC04)
запаял стабилизатор на 3.3в потом вспомнил что 7064 от Totem на 5в рассчитана.
а я уже макетку собрал... жду :)
без косяков конечно не получилось..
вместо 74hc04 поставил hc14 .. и теперь вместо 20мгц получается 48)))
логика чувствительная очень.. нужно наверно перепаять на LS04 (их полно в отличии от HC04)
запаял стабилизатор на 3.3в потом вспомнил что 7064 от Totem на 5в рассчитана.
все выводное желательно паять последними, они будут мешать пять SMD.
vfiuchcikicshuusrch
25.10.2014, 14:13
Totem, понятно что будут. но я справлюсь :) там достаточно большие контакты и ноги у чипа.. проблем у меня вообще не возникнет.
темболее если воспользуюсь паяльной пастой, и феном погрею с обратной стороны платы, то всё запаяется на раздва.. и ничего не помешает вообще :)
Totem, понятно что будут. но я справлюсь :) там достаточно большие контакты и ноги у чипа.. проблем у меня вообще не возникнет.
темболее если воспользуюсь паяльной пастой, и феном погрею с обратной стороны платы, то всё запаяется на раздва.. и ничего не помешает вообще :)
Кстати ты почтовый индекс не указал, или я не доглядел. возникла проблема:)
vfiuchcikicshuusrch
25.10.2014, 15:18
Totem превысил(а) максимальный объём сохранённых личных сообщений и не может получать новые сообщения, пока не удалит часть старых.
У тебя сообщения переполнены)) больше не принимает..
У тебя сообщения переполнены)) больше не принимает.. Индекс 153051
эт все спамеры:)
vfiuchcikicshuusrch
25.10.2014, 15:43
Totem, сорри за косяк с индексом (
Требую продолжения банкета! (с)
balu_dark
26.10.2014, 12:22
Вот довезет дед Мороз подарки - будет и продолжение :)
Требую продолжения банкета!
а что, ты уже всё сделал? :)
avk.ghost
27.10.2014, 23:42
Всем привет.
Подключусь к вашей беседе, т.к. тоже интересно.
Заодно приведу свой пример ШИМ
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity PWM is
port (
clk: in std_logic;
q: out std_logic
);
end PWM;
architecture MAIN of PWM is
signal cnt: integer range 0 to 255:=0;
begin
process(clk)
begin
if (clk'event and clk='1') then
if (cnt >= 0 and cnt < 64) then
q <= '1';
else
q <= '0';
end if;
if (cnt < 255) then
cnt <= cnt + 1;
else
cnt <= 0;
end if;
end if;
end process;
end MAIN;
Теперь хочу спросить, как правильно считать строчные и кадровые импульсы. Ткните в мануал плз.
Из того, что нашел для разрешения 1920х1080:
* Pixel clock: 148.5 MHz
* Количество пикселей в строке - 2200. (1920 - информационных, остальное - blank)
* Количество строк - 1125 (1080 - информационных, остальное - blank)
Хотел бы узнать, как рассчитать время начала импульсов и длительности импульсов для h_sync и v_sync.
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use work.my.all;
entity sync is
port(
clk: in std_logic;
hsync,vsync: out std_logic;
r,g,b : out std_logic_vector(3 downto 0);
);
end sync;
architecture main of sync is
signal hpos: integer range 0 to 2200:=0;
signal vpos: integer range 0 to 1125:=0;
begin
process(clk)
begin
if(clk'event and clk='1')then
if(hpos<2200)then
hpos<=hpos+1;
else
hpos<=0;
if(vpos<1125)then
vpos<=vpos+1;
else
vpos<=0;
end if;
end if;
if(hpos>48 and hpos<140)then -- h_sync interval
hsync<='0';
else
hsync<='1';
end if;
if(vpos>0 and vpos<4)then -- v_sync interval
vsync<='0';
else
vsync<='1';
end if;
if((hpos>0 and hpos<280) or (vpos>0 and vpos<45))then -- 280 is blank for h_sync and 45 is blank for h_sync
r<=(others=>'0');
g<=(others=>'0');
b<=(others=>'0');
end if;
end if;
end process;
end main;
Оба куска кода нуждаются в оптимизации. По этому хотел бы спросить, на что следует обратить внимание?
---------- Post added at 00:36 ---------- Previous post was at 00:33 ----------
Да, забыл добавить, моник нормально отображает картинку, сгенериенную данным генератором. Разрешение 1920х1080х60.
---------- Post added at 00:40 ---------- Previous post was at 00:36 ----------
Еще мне кажется, нужно строчный импульс посылать не в начале строки а в конце. То же самое можно сказать и о кадровом импульсе.
Константы строчного и кадрового импульса подбирал методом тыка, чтобы не соравло синхру и моник все отобразил без проблем.
---------- Post added at 00:42 ---------- Previous post was at 00:40 ----------
Ну и последнее, забыл добавить - плата Altera DE1.
Привет!
По-моему, вот это - избыточно:
if (cnt >= 0 and cnt < 64) then
достаточно проверки "меньше 64".
Хотел бы узнать, как рассчитать время начала импульсов и длительности импульсов для h_sync и v_sync.
Вероятно, есть готовые таблицы времянок, у меня есть только для 640*480*60, я так предполагаю, что ее можно применить ко всем режимам масштабированием.
Самы й главный косяк - старайся все синхроимпульсы. гашение и прочие бланки оставлять на конец счетчиков, а не в начало. Счетчики нужны также для адресации видеопамяти, поэтому "левый край" должен начинаться с нуля, спокойно тикать до конца видимой области, а уж потом запускать синхроимпульсы.
Посмотри мои примеры видеогенератора в этой теме.
avk.ghost
28.10.2014, 00:53
Некоторые моменты для VGA брал отсюда.
http://javiervalcarce.eu/wiki/VGA_Video_Signal_Format_and_Timing_Specifications
---------- Post added at 01:43 ---------- Previous post was at 00:56 ----------
Посмотрел пост #115 (http://zx-pk.ru/showpost.php?p=744429&postcount=115)
Все ок. Посмотрел. Спасибо.
Попробую на основании диаграмм помасштабировать. Наберу базу данных для видео режимов.
Еще один видеорежим, который делал: 1280х1024х60 Завелось при следующих данных:
* Pixel clock: 108 MHz
* Количество пикселей в строке - 1688. (1280 - информационных, остальное - blank: 408)
* Количество строк - 1125 (1080 - информационных, остальное - blank: 42)
Если брать и масштабировать, то немного не бьют цифры с данными, получеенми в результате моделирования.
1920x1080x60 (2200x1125x60)
1 пиксел: 9,25e-9 секунд.
Вся строка: 1.48e-5 секунд.
Весь кадр: 0,16(6)
Строчный импульс - 6,1916e-7 сек.
Кадровый импульс - 5,92e-5 сек
1280x1024x60 (1688x1024x60)
Вся строка: 1,56e-5 секунд.
Весь кадр: 0,16(116)
Строчный импульс - 1,036e-6 сек.
Кадровый импульс - 9,36e-5 сек.
На сколько я понимаю - эта разбежка не существена. Так?
---------- Post added at 01:45 ---------- Previous post was at 01:43 ----------
Возможно, я подобрал данные, на которых оно рабтает стабильно, но не факт, что это нормальные данные.
---------- Post added at 01:53 ---------- Previous post was at 01:45 ----------
Вот еще наткнулся на VGA симулятор. (http://ericeastwood.com/blog/8/vga-simulator-getting-started)
Попробую на нем помоделировать, посмотреть результаты
avk.ghost
28.10.2014, 11:02
http://blog.radiotech.kz/blog/fpga/18.html
http://habrahabr.ru/post/157863/
Первую ссылку не видел. Вторую на шел в процессе написания поста. Также нашел довольно много готовых таблиц.
ну где-то эти примеры для DE1 то жи были. На FullHD не пробовал, но 1680 x 1050 и ниже вполне работали примеры
По поводу данного разрешения - такое получилось сделать когда я подобрал параметры для 1920х1080 но, в качестве забыл перевесить вход PLL c 24 МГц на 27 МГц.
Еще вчера нащел калькулятор в excel. Если надо - могу выложить, но из дома. На работе нет. FPGA - хобби.
avk.ghost
28.10.2014, 12:41
Нее, тут не надо... тут хозяин топика...эээ... флуд не признает))
Заведи отдельный топик для DE1 - там может что и покажу, из конверсий.
Ок. Не будем флудить. Вышеописанное относится к обоим производителям ПЛИС. Думаю это пригодится и топикстартеру. Да и там дана общая теория построения, VGA контроллера.
а это все надо удалить)) Это к обучению ПЛИС Xilinx никак
не относиЦЦа )
Судя по посту #143 (http://zx-pk.ru/showpost.php?p=744988&postcount=143) топикстартер приобрел себе EP1C3T100C8N. Думаю, это уже может относиться к обучению ПЛИС Altera.
На сколько я понимаю - эта разбежка не существена. Так?
Мониторы воспринимают достаточно большой разброс в параметрах сигнала.
Конечно, лучше "держаться ГОСТа" по возможности :)
А зачем тебе такое высокое разрешение?
Квартус как всегда делает мозг с лицензией, стоит сейчас как вроде пробная на 30 дней, почему не понятно, сделал всё как описано в реадми и как в прошлый раз делал
Уже сто лет как не делает мозг.
Нужно наличие сетевой карты в компе и виндовый блокнот, и регистрация пройдена на полную версию.
Модельсим - пока не заморачивайся с ним, для начала тебе встроенного симулятора в кактусе хватит за глаза.
Уже сто лет как не делает мозг.
Нужно наличие сетевой карты в компе и виндовый блокнот, и регистрация пройдена на полную версию.
К 13-14 это тоже относится? Если да, то намекни, где почитать про
avk.ghost
28.10.2014, 22:42
А зачем тебе такое высокое разрешение?
Просто для тренировки и для разработки методики генерации строчных и кадровых импульсов.
balu_dark
28.10.2014, 22:46
Как сделать нужную лицензию, поэтапно можно разъяснить. А то поставить его поставил, версию которую ты советовал, а вот без лицензии как дальше жить, как примеры решать, как проверять их если он вдруг запускаться перестанет, как девборду мутить на EP1C3T100C8N.
И тут же вопрос появляется, насколько я понял мой шнурок, который собрал фото выше, может работать только с 5В микросхемами ПЛИС, так как там стоит микросхема К555КП5, а она же не может работать с питанием 3,3В. Значит, получается мне нужно собрать ещё один шнурок, с микросхемой 74HC244, так как она может работать и диапазоне 3,3...5В?
Дешевле навесить сверху микросхему транслятора уровней. Поставить 2 стабилизатора и переключатель. надо 1.8 вольт - тыц в одну сторону, надо 3.3 - тыц в другую - надо 5 вольт - отцепил платку с преобразователем и все ок.
balu_dark
29.10.2014, 01:46
Да ну эти стабилизаторы, выключатели ещё одна микросхемка, когда весь ByteBlaster состоит из одной микросхемки. Мне проще ещё один склепать, полную копию.
...
Ну вообщето полная копия и содержала в себе микросхему транслятор уровня. Байтбластер лптшный был расчитан только исключительно на 5 вольт чипы - его поэтому и перестали производить. Более новые решения - уже имели преобразователи на борту.
воть провереный транслятор http://www.ti.com/lit/ds/sces584a/sces584a.pdf
SN74LVC8T245
Viktor2312,
Квартус как всегда делает мозг с лицензией, стоит сейчас как вроде пробная на 30 дней, почему не понятно, сделал всё как описано в реадми и как в прошлый раз делал
качал квартус с торрента как Вам давали ссылку и кряк отлично работает.Накатывал сверху SP1 - кряк подходит.Затем качал SP2- ему не нужна установка 9.1 - он отдельную папку делает и можно двумя сразу пользоваться версиями.крак опять же подходит от 9.1.Установил на 3х компах - xp и win7 x64.
---------- Post added at 01:38 ---------- Previous post was at 01:34 ----------
с микросхемой 74HC244, так как она может работать и диапазоне 3,3...5В?
только эту микросхему и ставить и питать от самой платы FPGA.она кмоп и выравнивает уровни между LPT =FPGA.Если питать отдельным проводом +5в задерутся сигналы до +5в ТТЛ (4,6).
---------- Post added at 01:41 ---------- Previous post was at 01:38 ----------
есть у меня камень не нужный EP1C3T144C8N - хочу купить переходник на макетку и смогу присоединиться к обучению :)
Vladimir_S
29.10.2014, 05:06
так как питание через 10-pin разъём и будет на программатор заводиться.
Вообще то через 4.
Vladimir_S
29.10.2014, 10:38
Я имел в виду, что через 10-ти контактный разъём JTAG будет заводиться
Да я уже понял.Вначале подумал, что ты десятый пин имел в виду.
К 13-14 это тоже относится? Если да, то намекни, где почитать про
Я не пользуюсь этими версиями.
Перебрав разные, остановился на Quartus 9.1 с сервиспаком, ссылку на который я и давал Виктору.
Просто начиная с десятой версии, в кактусе отсутствует штатный симулятор, и всем предлагают пересесть на модельсим.
Бесспорно, модельсим круче штатного, но меня напрягает в каждом проекте настраивать его, посему я остался 9.1.
Настройка лицензии - несложная, всё описано.
Открываем в кактусе Tools->License setup. Смотрим там номер Network card. Копируем его в клипборд, открываем в блокнотике файлик лицензии quartus.dat, прилагаемый к дистрибутиву, и командой Remove All заменяем "хххххххххх" на эти циферки сетевой карты. Две секунды, и файл лицензии готов. Сохраняем, тыкаем кактус носом в этот файлик и живем спокойно.
---------- Post added at 12:17 ---------- Previous post was at 12:12 ----------
Про уровни сигналов JTAG.
Сейчас меня закидают помидорами в очередной раз, и будут правы по сути.
Нужны преобразователи уровней.
Но - поставьте последовательно сигналам JTAG резисторы 100 ом, и спокойно прошивайте хоть пятивольтовые, хоть трехвольтовые чипы без преобразователей.
Мы в России живем, у нас это работает.
Понятно, я (сугубо в познавательных целях) вроде 7.2 примерно так лицензировал (конечно же, потом я его сразу удалил).
Вот уже к Ewgeny7 скорее просьба или к тому, кто может глянуть
Первый вариант работает, но - с иголками-провалами.
Второй вариант - не работает, на выходе всегда 0.
У меня там: 000000000000
Это нормально?
Блин.... У тебя нет сетевой карты на компе?
По поводу делителя - абстрагируйся от микросхем.
Напиши код другого толка:
1. Счетчик, считает до двух, далее сбрасывается. Итого имеем три состояния - 0,1,2.
2. Сигнал выхода инвертируется с каждым сбросом счетчика.
Вот и весь делитель.
Код под спойлером.
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity test is
port(
clk : in std_logic;
q_out : out std_logic);
end test;
architecture st of test is
signal cnt : std_logic_vector (1 downto 0);
signal q : std_logic;
begin
process (clk)
begin
if (falling_edge(clk)) then
if (cnt=2) then
cnt <= "00";
q <= not q;
else
cnt <= cnt+1;
end if;
end if;
end process;
q_out <= q;
end st;
http://savepic.org/6309885.png
Ну посмотри что сейчас пишет
Да у меня несколько другое пишет....
Попробуй запустить программатор, не будет ли ругаться?
На всякий случай - файл лицензии под твои нули - https://yadi.sk/d/xATd0004cMuCd
shurik-ua
29.10.2014, 13:09
Напиши код другого толка:
1. Счетчик, считает до двух, далее сбрасывается. Итого имеем три состояния - 0,1,2.
2. Сигнал выхода инвертируется с каждым сбросом счетчика.
Вот и весь делитель.
Это делитель на 6 )
Это делитель на 6 )
Ай блин, да.... :)
---------- Post added at 14:35 ---------- Previous post was at 14:32 ----------
можно посмотреть, что он делает???
Можно. Рисует аккуратные жоппы :)
http://savepic.org/6348553.png
---------- Post added at 14:36 ---------- Previous post was at 14:35 ----------
Тогда появляется вот такое окошко
Вроде как всё в порядке...
Что-то судя по картинке, на ней в один период q_out укладывается шесть периодов clk, получается как бы делитель на 6.
А я хочу сделать делитель на 3, так:
http://img-fotki.yandex.ru/get/3110/48644933.2c/0_e93c4_ac4ecae9_orig.png (http://fotki.yandex.ru/users/lpiti/view/955332)
6309885
http://www.asic-world.com/examples/vhdl/divide_by_3.html
Эта должна работать, по крайней мере в железе она пашет
Рисует аккуратный меандр, но деление идет на четыре, а не на три.
---------- Post added at 19:50 ---------- Previous post was at 19:48 ----------
http://savepic.org/6312749.png
Тогда я вообще ничего не понимаю, я даже на листике нарисовал, диаграмму как должно быть, и у меня ширина импульса равна одному такту, а ширина расстояния между импульсами равна двум периодам, то есть три периода укладывается. Не меандр, но частота будет поделена на 3. Значит я не правильно интерпретирую это в код. Последний код по сути ИЕ2 включённая как делитель на 3, только без входов R9 включённых по И.
Нужно всё начинать сначала...
попробуй "кривой и длинный код", от "зарубежных партнеров", что выше по "сцылке".
Маленькое пожелание (напутствие):
1) желательно не размещать "проекты" в каталогах в именах которых есть пробелы, русские буквы.
2) исключить использование русских букв в vhdl (в частности в комментариях).
3) Isim достаточно прост. Для того чтобы посмотреть что "получилось" достаточно "клыкать" мышой по "иконкам". "Самое интересное" это написать правильный testbench.
4) начиная с какой-то версии ISE (толи 12 толи 13) isim не умеет "симулировать" спартан-3 в части microblaze. Так было задумано "Автором".
ps: сам я "сижу" на вивадо + верилог (это доп. деятельность по работе).
5) Основная "проблема" у xilinx - это то что он направлен на "топ" разработки (типа обработки изображения, связь, итд) и как следствие микросхемы выпускаются в BGA корпусе и до кучи "родной" программатор стоит "безумных денег" (300-500$)/ Однако есть аналоги за 3тр. (примерно). Или есть еще мини-юсб от дигилента.
6) пункт 5) относится и к altere.
7) если надо что-то специальное сотворить на плисе (типа очень маленькое или батарейное питание итд) есть ряд других фирм - но там свои "заморочки".
Тоже читали, знаем, пока ничего серьёзного не даелается, поэтому допускаю коментарии с русскими буквами.
Ну не знаю, сейчас осваиваю неспеша MicroBlaze, так там написано что в моём кристалле XC3S200A-4VQG100C он занимает примерно 27%, ну пусть округлим 1/3 а корпус никакой не BGA, так что всё нормально и 32-разрядное ядро влазит и для периферии место останется.
По поводу программатора, меня устроит самодельный кабель JTAG на двух микросхемах, умещающийся в корпусе LPT разъёма.
1) однако Ваши примеры "установлены" в путях с пробелами.
2) MicroBlaze (с вещественной арифметикой) + контроллер SDRAM + EPC + UART + I2C + gpio + BRAM + таймер + контроллер прерываний = влезло в спартан-3е 500 (подзавязку).. Это был самый "толстый" кристалл в "планарном" корпусе.
3) "двух микросхемах, умещающийся в корпусе LPT разъёма" = опять же начиная с какой-то версии ISE (и / или новых видов плис) он уже не поддерживается. Из-за низкой скорости и не возможности работать при низком напряжении новых плис и др. (кажется такая была "официальная" версия).
Device Utilization Summary [-]
Logic Utilization Used Available Utilization Note(s)
Number of Slice Flip Flops 5,357 9,312 57%
Number of 4 input LUTs 8,719 9,312 93%
Number of occupied Slices 4,652 4,656 99%
Total Number of 4 input LUTs 8,976 9,312 96%
Number of bonded IOBs 123 158 77%
Number of RAMB16s 18 20 90%
vfiuchcikicshuusrch
30.10.2014, 22:47
я попробовал код из этого сообщения
http://zx-pk.ru/showpost.php?p=749287&postcount=254
и всё отрабатывает :) я из 20мгц получаю 6.66258мгц :) радует что работает! :)
пробовал в квартусе, vhdl.
тот же самый код в verilog формат не прошел... в чем разница я пока не понял... читаю книжки на англ.
vfiuchcikicshuusrch
31.10.2014, 10:06
Viktor2312, мне кажется программить плисы проще чем программить МК..)) ну это пока только имхо...
Да есть USB прогеры и подешевле Xilinx Platform Cable USB 1164 руб. (http://cn.shopotam.ru/taobao/7850739167-item.html)
Но можно и самому собрать Программатор USB XILNX для самостоятельного изготовления (http://portal-ed.ru/index.php/programmator-usb-xilinx), схема доступна, прошивается из ISE 10 версии, потом обновляется в 14-й версии.
В "быту" народ заморачивается изготовлением на ftdiXXXX.
В моём случае последним самопалом был lpt-jtag. все остальное покупное фирменное.
Как обычно я всё смотрю на сайте xilinx
Там есть раздел демоплат, к ним прилагаются схемы.
примерно в таком месте:
Home : Products : Boards & Kits : Spartan-3A Starter Kit
http://www.xilinx.com/products/boards-and-kits/HW-SPAR3A-SK-UNI-G.htm
http://www.xilinx.com/support/documentation/boards_and_kits/s3astarter_schematic.pdf
Как всегда можно найти другие демо платы с документацией от другого "производителя" (avnet/digilentic итд)
Кроме всего есть документация по самим микросхемам.
Как "разводить" выводы плисы по назначению есть целая "наука" - не все выводы одинаковы по своим возможностям.
PS: так получилось что я "забил" на все плисы до 7 семейства, нынче в моих фаворитах artix и еже с ними. Среда разработки более "правильная" (vivado).
PS: PS: На текущий момент моя крайняя разработка это спартан-3е500 в ise12.4. Все последующие будут на 7-ке...
PS: PS: PS: Однако я всё же больше программист чем плисовод (для этого у нас есть специально обученные люди. у меня это побочная деятельность).
ISE14.7 это крайняя версии и больше не развивается. В замен идёт Vivado - но она только для 7 и свежее плис.
Дык есть разные "программаторы" дешёвые и дорогие. "Контора платит" (с)
Из готовых (к примеру!!!)
http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,395,1052&Prod=JTAG-HS2
На еба и у китайцев всяко ещё дешевле можно наверно найти...
А я выбрал Spartan-3A так как он во первых рекомендуется в новых разработках, по крайней мере, когда я смотрел инфу и доступн по цене, хотя естественно в планах развитие и изучение ховых семейств.
Значит буду читать ug331, ds529 и другие, там как вроде всё есть...
Я не знаю где Вы видели "рекомендуется в новых разработках". Скажем так "реклама" сего семейства (3а) расположена на "второй" странице, на первой 6, 7 и 8, а на третьей то что уже "снято" с продажи.
В тоже время я не говорю что 3а плохое семейство. это семейство (3) и 6 последние у которых есть "планарные корпуса" (если не склероз). до кучи надо помнить что они не "переваривают" 5в на выводах.
"конф. ПЗУ" это величина постоянная и не зависит от "схемы" реализованной в плисе. В документации на Плис она есть.
Если "делать" процессор в плисе - то для него надо ОЗУ и ПЗУ.
Это либо используется внутренние ресурсы ПЛИС или внешние микросхемы ОЗУ и ПЗУ. Внутренние ресурсы ПЛИСы это 32 килобайта памяти (которое может быть как ОЗУ так и ПЗУ).
balu_dark
31.10.2014, 15:21
Зачем мне например 32Мб, если я решил в ПЛИС реализовать устройство занимающее 30% кристалла и оно умещается в 1Мб.
Или я что-то ни так понимаю?
Речь идет скорее о наоборот - если вашу плис моет влазить 2мб файл - ставить конфиг пзу на 32 метра - незачем.
Что до более мелких - в плисе стоит тупой автомат - он знает что надо загрузить данные длиной километр - вот он и будет грузить длиной в километр. даже если там всего 10 метров реально пользуется. Если конфиг пзу не посылает ошибку при переполнении чтения то можно ставить и маленькое пзу - а вот если посылает - тогда без вариантов ставить то которое нужно а записывать его уже тем что есть.
В каком смысле величина постоянная они бывают разного объёма
XCF01S - 1Мб
XCF02S - 2Мб
XCF04S - 4Мб
XCF08P - 8Мб
XCF16P - 16Мб
XCF32P - 32Мб
Зачем мне например 32Мб, если я решил в ПЛИС реализовать устройство занимающее 30% кристалла и оно умещается в 1Мб.
Или я что-то ни так понимаю?
---------- Post added at 16:51 ---------- Previous post was at 16:10 ----------
Вот пока из всей необходимой информации, в кучах документов на семейство Spartan-3A я нашёл только одну необходимую для меня информацию, это какие есть выводы питания и земля естественно и сколько выводов каждого напряжения для конкретно моего корпуса.
Вот такая табличка, красным выделен мой случай:
https://img-fotki.yandex.ru/get/6842/48644933.2c/0_e96ae_41875553_orig.bmp (http://fotki.yandex.ru/users/lpiti/view/956078)
XC3S200A__001
Каждая ПЛИСа имеет свой файл прошивки (так называемый bitstream.mcs ) Так вот его размер величина фиксирована и зависит от "логического объёма" плис и не зависит от реализуемой схемы в плисе. По его размеру и выбирают ближайшую большую микросхему XCFxxx
ds529 на первой странице перечислены практически все нужные документы. А именно ug332. на странице 39 таб 1-4
читаем что размер configBits== 1196128 бит
Округлили - получили 2Мбит - значит микросхема не меньше XCF02S. (или две XCF01S) (или половинка XCF04S)
Читать сей документ обязательно.
Про выводы: надо понять смысл "BANK" и тогда будет понятно как надо "запитывать" плис.
PS: Другой момент - в этой ПЗУ можно хранить вашу программу (и/или данные) которые "считываются по битно" в ОЗУ для процессора. тогда можно использовать остаток ПЗУ (2 мб - 1.24 мб = 0.76мб) для своих нужд. (но в общем случае эту ПЗУ XCF02S прошивать можно только программатором xilinx).
Кроме XCF02S в теории можно использовать SPI-микросхемы памяти. (чти ug332). Это может быть дешевле и практичнее.
Внесу пять копеек - можно использовать конфПЗУ бОльшего размера, просто используя лишнее место как ПЗУ для своих нужд.
Если объем внешней памяти велик, то можно часть внешней ОЗУ отдать под ПЗУ, а прошивку туда заливать из неиспользуемой области конфПЗУ. На платах Реверсе примерно так и сделано для конфигов спектрума.
---------- Post added at 15:58 ---------- Previous post was at 15:57 ----------
Другой момент - в этой ПЗУ можно хранить вашу программу
Во, только сейчас увидел :)
XCFххS по слухам достаточно дорогая. spi вариант может быть дешевле - посмотрите на цены. до кучи мне нравятся либо UART либо UART-USB - полезно для отладочных целей. Заместо дисплея и клавиатуры.
в ug332 расписано практически все. Есть понятие jtag-цепочка. Это когда xcf и плиса соединяются в "длину" и можно не переключая jtag кабель прошивать ПЗУ (флаш) и/или саму плису (многократно и мгновенно).
http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,398,1300&Prod=S3BOARD
http://www.digilentinc.com/Data/Products/S3BOARD/S3BOARD_RM.pdf
здесь наглядно все нарисовано.
------------
где и что распологать решать вам.
можно на одной плате расположить плису стабилизаторы генератор кварцевый
на другой всё остальное.
если разъём ставить с краю - то их можно будет вставлять в материнку с десяток.
или посмотрите как собирается "этажерка" в конструктиве pc104 и еже сними.
------------
Из серии что влезет в плису
1) можно по пробывать уложить "потактовый клон 580"
или
2) http://www.ht-lab.com/freecores/cpu8086/cpu86.html
3) "родной" микроблайз
и посмотреть процент "используемых" ресурсов
Вероятно, тебе нужен мастер сериал. Все М-ки на землю.
Это для загрузки после включения.
А JTAG и так будет работать, независимо от "ключей".
---------- Post added at 12:45 ---------- Previous post was at 12:39 ----------
На альтерах есть аналогичные пины MSEL. Для работы "по умолчанию" с автозагрузкой из конфПЗУ эти пины сажаются на землю, режим называется Active serial.
Что за фигня такая с твоими ксилинками?...
Вот классическое подключение альтеры типа циклона :
http://savepic.org/6305383.png
Воть. А разъем JTAG подключается напрямую к циклону. И он всегда готов заливать прошивку в циклон.
Прошивка же в конфПЗУ заливается через сам циклон, он становится "программатором" для конфПЗУ в такие моменты.
пуленепробиваемое руководство по конфигурированию
Ик.... Не зря я альтеру выбрал в свое время...
Наворочено-то как... Я там не сильно упорствовал в понимании, но вырисовывается, что загрузка конфига после включения подобна альтеровской, те же "пять проводков", а вот заливка прошивки в ПЗУ выливается в использование JTAG-интерфейса ПЗУхи... Нафига так сделано? На альтере можно сериал-ПЗУ сторонних производителей использовать, и ножек у нее всего восемь...
Кратенько (насколь склероз позволяет)
1) Xilinx плисы умеют грузиться с различных видов пзу xcf spi bpi
2) с одной пзу можно загрузить несколько плис разными прошивками
3) прошивки можно "зиповать" и шифровать
4) итд
посему msel выбирается нужный режим.
в общем случае это специальные выводы и не используются апосля.
в частном случае задан режим через msel: грузиться из xcf + есть разъём jtag => можно шить пзу и/или плису, а при отключенном разъёме при подаче питания плиса грузится из пзу.
Это те которые M0, M1, M2 или о каких выводах идёт речь? На предыдущей странице есть рисунок микросхемы ПЛИС моей XC3S200A-4VQG100C.
да
0:0:0 mode
Вот в этой схеме как вроде всё понятно, кроме одного куда должен идти вывод CEO у микросхемы ППЗУ, он просто обозначен стрелочкой как выходной, но не подписано, куда его подсоединять.
повторяю - ug332 наше всё.
рисунок 3-1 и 3-2 как пример.
balu_dark
04.11.2014, 03:11
Виктор - как не стыдно - надо знать язык потенциального ..... гхм ... друга!
Хотя бы на уровне -
Hands up- motherfucker! Where is nearest rocket launch position??! I wiil cut your balls if you will keep silence!
Ну как то так - если я не ошибаюсь в языке.
ds123 страница 24 . как я и предполагал используется для "увеличения ёмкости" пзу (каскадирование). на практике ни куда не идёт. число и номинал конденсаторов тоже наверно гдето прописано. склероз однако. а на практике можно посмотреть на печать демо платы.
Я конечно "плох" местами но я вижу только 2 джампера вместо трех. Хотя на практике они всегда запаяны в конкретном положении.
максимальная частота "процессора" на плисе будет от 50 до 100мгц на спартане 3а - и ни как не 333мгц (грубо говоря это быстродействие одного логического элемента)
Сделал по схеме из xapp986 см. 1 пост на этой странице. М1 всегда на земле, из таблицы видно, что комбинация [M2:0] 011 не используется вообще, и станут не доступными, так как М1 = 0, всегда, комбинации:
010 - BPI UP
110 - Slave Parallel Mode
111 - Slave Serial Mode
А на сколько я понял нам эти режимы и не нужны, при применении XCF04S.
---------- Post added at 12:04 ---------- Previous post was at 12:01 ----------
Ну как вроде в datasheet -ах пишут поболее, что-то с 200 МГц связанное, сейчас не могу доку найти где читал, но точно для Spartan-3A в районе 180...200 МГц для MicroBlaze ядра.
Вы верите что автомобиль (обычный - не оптимизированный) потребляет 2 литра на 100км в городских условиях ?
Я утверждать не буду, на практике не сталкивался, но если производитель пишет, что он гарантирует стабильную работу на такой-то частоте, как вроде 200 МГц, то наверное он гарантирует это, учитывая, что максимальная заявленная частота для кристалла 333 МГц, вполне верится.
Тема в том что чем "сложнее схема" тем ниже будет глобальная тактовая частота проекта. Проще говоря ла3 будет работать на 333 мгц, а ие5 в лучшем случае на 200 мгц. (это утрированный пример).
другими словами: Выход Q ТМ2 идёт на схему из 10 ла3 далее на вход D другой ТМ2, при этом входы C обоих ТМ2 соединены с тактовым сигналом. так вот сигнал должен успеть пробежать от одного триггера до другого. Чем больше (сложнее схема) тем ниже рабочая частота.
Поднимал я тут вопрос по новым версиям квартусов. Ответ можно прочитать, например, на рутракере в теме по квартус 11.1 (только в познавательных целях, я за использование легального ПО).
BGA обычно разводят на многослойной печатной плате (от 4-х слоёв) . и перечитайте предыдущее мое сообщение (отредактировал)
По поводу лицензий. Что xilinx что altera имеют бесплатные версии ПО. вся разница в основном в "разрешённых" плисах. есть ряд и других ограничений от платной версии.
В xilinx наоборот ушли от "штатного моделсима" к своему isim. НО это ТОРМОЗ по сравнению с моделсимим - зато "бесплатный".
s_kosorev
05.11.2014, 23:11
Чем длиннее путь сигнала, тем меньше частота, конвеер в процессорах это самый наглядный пример того как укорачивают путь для повышения частоты.
Xcell journal
Xcell89 (https://yadi.sk/d/pbFppG84cZW4c)
А в чём собственно прикол 89 выпуска ?
зы: онлайн тоже неплохо смотрится на сайте xilinxa.
а нет сравнительной таблички по cpld xilinx-altera? по fpga есть.
balu_dark
12.11.2014, 17:30
Спасибо дедушке Морозу - за нашу счастливую зрелость!
Доехала коробочка.Я даже не открывал! Честно честно! до нового года - нини!
Задачка для тех, кто еще учится :)
Имеем ПЛИС и индикатор АЛС-318.
Задача вывести на индикатор циферки последовательно.
Как на фото:
http://savepic.org/6473928.jpg
На пробел между 3 и 4 внимания не обращать, просто у меня так распаян индикатор, для ЮТ-88.
Код, как обычно, под спойлером.
Варианты могут быть разные, разумеется.
У меня там вообще тупо стоит на входе 16-разрядный счетчик для деления входящей частоты 50МГц :)
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.numeric_std.ALL;
entity leds is
port(
CLK : in std_logic;
LED_s : out std_logic_vector(6 downto 0);
LED_n : out std_logic_vector(7 downto 0)
);
end leds;
architecture leds_arch of leds is
signal counter : std_logic_vector(15 downto 0);
signal code : std_logic_vector(2 downto 0);
begin
counter <= counter+1 when (rising_edge(CLK));
code <= code+1 when (rising_edge(counter(15)));
process(code)
begin
case code is
when "000" => LED_s <= "0111111";
LED_n <= "01111111";
when "001" => LED_s <= "0000110";
LED_n <= "10111111";
when "010" => LED_s <= "1011011";
LED_n <= "11011111";
when "011" => LED_s <= "1001111";
LED_n <= "11101111";
when "100" => LED_s <= "1100110";
LED_n <= "11110111";
when "101" => LED_s <= "1101101";
LED_n <= "11111011";
when "110" => LED_s <= "1111101";
LED_n <= "11111101";
when "111" => LED_s <= "0000111";
LED_n <= "11111110";
end case;
end process;
end leds_arch;
И зачем это нужно?
Действительно, и зачем это нужно? Бабла это не принесет, на стенку не повесишь :)
---------- Post added at 09:59 ---------- Previous post was at 09:58 ----------
Индикация динамическая?
Странный вопрос, если индикатор - АЛС-318, указан явно.
piroxilin
13.11.2014, 11:52
Ewgeny7, интересно во что квартус этот код переварит - в 8 8-или элементов??
Меня порой такие задачи в тупик ставят, хочется как-то оригинально сделать а тут такой простой вариант но расточительный немеряно )))
Сначала в голову лезут мысли вывод организовать по цепочке логики этакий хитрый дешифратор, а тут раз и пусть кактус сам как хочет разбирается )))))) мне нра !
piroxilin, Не совсем уловил суть, но заняло оно немного, особенно с учетом, что там у меня делитель частоты огроменный.
Индикация динамическая, конечно.
На идикаторы выводятся последовательные цифры, не изменяющиеся со временем.
По сути, там просто выдаются последовательно восемь комбинаций сигналов на сегменты и катоды индикатора, это действительно совсем не сложно :)
Только восемью элементами все равно не отделаешься, приходится размещать небольшое "ПЗУ".
---------- Post added at 21:02 ---------- Previous post was at 20:59 ----------
Ошибок и предупреждений при синтезировании и размещении на кристалле не выдал 0.
Макетку собирай... Чтобы вживую было.
А эээ зачем, ты же мне прислал макетку?
А почему ты ее не используешь?
http://biakom.com/altera/comparing/cpld-xilinx
Судя по табличке CPLD xilinx, чуть лучше по ресурсам, чем altera
http://biakom.com/altera/comparing/cpld-xilinx
Судя по табличке CPLD xilinx, чуть лучше по ресурсам, чем altera
Бред.
Особенно графа "Время задержки tpd, нс"
Бред.
Особенно графа "Время задержки tpd, нс"
бред по macrocells CPLD.?
по скорости XC95144XL хуже epm3000a
или надо сравнивать не их?
бред по macrocells CPLD.?
по скорости XC95144XL хуже epm3000a
или надо сравнивать не их?
Таблица изначально "дурная" и не имеет смысла вникать в то что там написано.
Как может быть:
"XC3S5000 Spartan III Xilinx 1872 нс"
тормознее "XC9536XV XC9500XV Xilinx 5нс" ?
XC3S5000 легко работает на частотах 50мгц а это 20нс.
Сравните цифры 20 и 1872.
Если "косяк" в одной графе то с какой стати другие графы будут внушать доверия ?
опять же понятие "Количество макроячеек" растяжимое и оно адекватно только в пределах конкретного семейств микросхем.
Таблица изначально "дурная" и не имеет смысла вникать в то что там написано.
Как может быть:
"XC3S5000 Spartan III Xilinx 1872 нс"
тормознее "XC9536XV XC9500XV Xilinx 5нс" ?
XC3S5000 легко работает на частотах 50мгц а это 20нс.
Сравните цифры 20 и 1872.
Если "косяк" в одной графе то с какой стати другие графы будут внушать доверия ?
опять же понятие "Количество макроячеек" растяжимое и оно адекватно только в пределах конкретного семейств микросхем.
Да бог с ней с таблицей, там просто есть, какие семейства сравнивать примерно с чем, не роя кучи "даташитов", это понятно, что пределах и надо конкретный проект компилить под них,что бы сравнить в "железе".
хочу заказать себе xilinx cpld "поиграться". Вот думаю какую. при условии
что есть куча epm3256
Да бог с ней с таблицей, там просто есть, какие семейства сравнивать примерно с чем, не роя кучи "даташитов", это понятно, что пределах и надо конкретный проект компилить под них,что бы сравнить в "железе".
хочу заказать себе xilinx cpld "поиграться". Вот думаю какую. при условии
что есть куча epm3256
А чего тут сравнивать ?
Нынче есть то что производится и то что снято с производства.
Из производимого есть XA9500XL (толерантно к входному +5, выход +3.3) и Coolrunner-II XC2C000 вход и выход до +3.3в.
Из этого и выбирать.
PS: а выбирать из того что снято с производства это "не мой метод". (а у них много было разных микросхем).
Есть ещё "просто" Coolrunner XPLA3 XCR3000XL и XA9500 - но их статус не понятен.
Может я что и напутал - то не сильно (понедельник день тяжёлый).
По крайней мере эти четыре семейства есть в среде разработки Ise14.7.
За алтеру не скажу что у них есть.
Тогда уж лучше заказывайте FPGA и современно относительно, и число циклов записи относительно не ограничено, например как у меня. XC3S200A-4VQG100C. Возможно буду платку заказывать, на которой будет генератор, стабилизаторы, конф. память ППЗУ, сама микросхема ПЛИС. Если окончательно разберусь со схемой её включения.
дружище у меня отладка c ep2c8 я его и на 20% ни разу не юзал, на кой ляд мне еще Spartan? :D
Дык как там дела?
Пока Виктор камешки перебирает, я Скорпион-2014 сделал на древнем Циклоне... :)
http://savepic.org/6550691.jpg
http://savepic.org/6544547.jpg
http://savepic.org/6529187.jpg
я Скорпион-2014 сделал на древнем Циклоне... :)
Женя, а теперь тоже самое только на AHDL. :)
а теперь тоже самое только на AHDL
Не... Я не самоубийца. Это только ты да авторы "спринтера" такие извращенцы :)
---------- Post added at 00:20 ---------- Previous post was at 00:12 ----------
Здесь я, кстати, обкатал замышлявшийся когда-то Дмитрием Михальченковым СМУК-3. У меня даже плата заводская есть, Дима привез ее в свое прошлое посещение Питера. Там и IDE, и SD одновременно присутствует, поэтому дисковод не нужен.
Было нет?
дешевый JTAG для xilinx (USB), там же ссылки на демо платку и всякие "полезняшки".
http://bovs.org/post/121/deshevyi-samodelnyi-programmator-dlya-plis-xilinx-fpgalink
Было нет?
дешевый JTAG для xilinx (USB), там же ссылки на демо платку и всякие "полезняшки".
http://bovs.org/post/121/deshevyi-samodelnyi-programmator-dlya-plis-xilinx-fpgalink
Я так понял что ЭТИМ наверно можно прошить что либо. НО отлаживать в "железе" ChipScop-ом НЕТ.
Я так понял что ЭТИМ наверно можно прошить что либо. НО отлаживать в "железе" ChipScop-ом НЕТ.
Это Вы носитесь со своими "мега железками." :) конечно можно заказать
нормальный прогер, у меня вот пара XC95 на подходе. Мне для них его заказывать? ЛПТй собрать не проблема, но ЛПТ на мамке нет и слотов нет
куда его поставить?
Это Вы носитесь со своими "мега железками." :) конечно можно заказать
нормальный прогер, у меня вот пара XC95 на подходе. Мне для них его заказывать? ЛПТй собрать не проблема, но ЛПТ на мамке нет и слотов нет
куда его поставить?
Я не ношусь. Сам пользовался LPT в бытности. Просто нынче новые цели и задачи. а они решаются только "правильными" инструментами. Прошивалок можно найти много под конкретные цели "у китайцев". Видел ещё прошивалку официальную на COM-порт. что внутри - не знаю -залита пластиком.
Я не ношусь. Сам пользовался LPT в бытности. Просто нынче новые цели и задачи. а они решаются только "правильными" инструментами. Прошивалок можно найти много под конкретные цели "у китайцев". Видел ещё прошивалку официальную на COM-порт. что внутри - не знаю -залита пластиком.
Дык я о том же, у меня есть полноценный USB Blaster, поделка на PICе,
MV,BBII :) эволюция :).
на у "китайцев" есть прогеры USB. от 1800-2400р, сборка такого выйдет примерно столько же. и в этом проекте CoolRunner-II внутрях.
так что, выбор начинающего не велик, либо лпт, либо 135р за ат c USB.
Кстати у xilinx, есть аналог тулзы программер?
https://www.altera.com/download/legacy/asap2/dnl-asap2.jsp
при установке ISE опция Stand-Alone вроде была это оно?
Дык я о том же, у меня есть полноценный USB Blaster, поделка на PICе,
MV,BBII :) эволюция :).
на у "китайцев" есть прогеры USB. от 1800-2400р, сборка такого выйдет примерно столько же. и в этом проекте CoolRunner-II внутрях.
так что, выбор начинающего не велик, либо лпт, либо 135р за ат c USB.
Кстати у xilinx, есть аналог тулзы программер?
https://www.altera.com/download/legacy/asap2/dnl-asap2.jsp
при установке ISE опция Stand-Alone вроде была это оно?
Если Вы про Impact ?
Отдельно я не ставил - а вот другие люди да ставили -но там под гиг места просилось (мож я вру ?) . Могу посмотреть - если очень надо...
говорят есть чудная утилька у xilinx, xport -ahdl abel to vhdl, что то я ее найти не могу
ткните носом если не трудно.
В качестве лабораторной в универе пришлось наваять вот такую вот какашку:
http://cs7064.vk.me/c625524/v625524117/1083c/-UxXyr1bzz8.jpg
И почему какашку? Смотрится приколисто, хотя и не понятно что это такое и какая микросхема ПЛИС применяется.
Скорее всего демо плата на артиксе7
http://www.xilinx.com/products/boards-and-kits/ek-a7-ac701-g.html
AlexG - может посоветуете какую нибудь хорошую статью, только на русском, почитать. Просто я как бы помимо общего изучения, хочу выделить отдельную ветку по освоению ПЛИС Xilinx именно современных, то есть как бы то, вот, что именно - именно сейчас нужно изучать, чтобы не отставать в развитии, так как всё предыдущее базируется на устаревших семействах ПЛИС, старых версиях ПО, и т. д.
На русском практически нет. "профессионалы" на англицком читают. а начинающие читает то что другие начинающие написали.
За xilinx скажу следующее - они двигаются в сторону "программирования" плис на языках высокого уровня. типа С и С++. У них это называется "Vivado HLS". Кратенько: пишется некий алгоритм на С (как обычная функция с входными и выходными "переменными"). дальше оптимизируется с помощью "ключевых слов" (инструкций для компилятора) - формируется параллельные вычисления, конвейерные вычисления итд. для того чтобы удовлетворяла временным ограничениям. Далее пишется тест (на таком же С) для проверки "основной" функции. Все это компилируется в "считанные секунды" и тестится очень оперативно. потом отлаженная функция компилируется в верилог и еже с ним. затем это уже это компилируется в "прошивку" (может занимать по времени к примеру сутки). Конечно такой подход не оптимален к потребляемым ресурсам плис - но процесс создания прошивки (конечного) результата ускоряется в 100-1000 раз. Особенно это наглядно в алгоритмах обработки видео информации.
Ещё бывают лекции семинары от продавцов. или платные от официалов.
Кстати: цены на ТОП плисы начинаются от 4-5тизначных чисел в $. но и "транзисторов" в них миллионами напичкано
Но я так понимаю, что со временем цена на них будет снижаться, когда-то и XC9500 была наверное топовой с бешенной ценой. А сейчас, например XC9536-15PC44C стоит всего 40 рублей.
---------- Post added 28.12.2014 at 00:06 ---------- Previous post was 27.12.2014 at 23:58 ----------
И тогда ещё один вопрос, в догонку.
Какое семейство ПЛИС необходимо изучать на данный момент и какую САПР использовать, осваивать, для изучения данного семейства.
По вашему мнению.
---------- Post added at 01:51 ---------- Previous post was at 00:06 ----------
И если ответ на вопрос:
будет найден, то все же, желательна рекомендация по поводу литературы для изучения. Даже если и на английском, ничего страшного, буду значит совершенствовать свой технический английский в следующем году.
это где оно 40 рублей? 70-160.
приехал AT90USB162 для jtag и cpldишки.
будет время поиграюсь.
В магазине которым я иногда пользуюсь, интернет магазине. А для чего реклама на форуме приделана? Этот магазин постоянно у меня выскакивает. Вот перейдите по ссылке, правда их там 2 шт только осталось. http://www.elekont.ru/search/?q=XC9536-15PC44C
Спасибо, но оставлю их тебе :), у меня их есть уже, еще 72 и 288xl, еще я себя порадовал на НГ EP3C16Q240C8N. 240 ног я еще не паял )
Да мне CPLD особо и не нужны, это я для примера привёл её, первое на что наткнулся. О том что они сейчас относительно дешёвые, учитывая что можно сделать на их основе 50...250 руб. по нынешним временам, это не деньги. Точнее деньги, но копейки.
Жаль конечно, что мой вопрос остался без ответа, так как он определял какую РС ЭВМ себе собирать по конфигурации и мощности. Решил себе собрать отдельный комп именно для изучения, использования ПЛИС Xilinx. Тогда придётся действовать интуитивно. А так как С, С++, SystemC мне как-то не импонируют, то останусь на VHDL, и ISE.
То есть буду действовать по принципу:
1. Собираю комп, максимальной производительности из имеющихся дома копмлектующих.
2. Ставлю ПО. Винда, каспер, ISE, может ещё что-то.
и т. д.
Сейчас уже подобрал мать из имеющихся, хорошая материнка, есть 1 COM порт, есть 1 LPT потр, есть 10 USB, мыша клава можно PC/2 подключить, есть FLOPPY, есть 1 IDE, и кондёры возле проца танталовые, а не алюминиевые. И разъёмов памяти 4 шт, как раз есть 4 планки по 2G, будет всего 8Gb, и для этих 8 Gb как раз имеется Win 7 лицензионная. Вот правда проц максимальный это 775 сокет CORE2 DUO 2,4ГГц. Вот такой вот чипоратор хочу собрать и поставить Xilinx ISE Design Suit 14.7
И я так понял 14.7 максимум поддерживает 7-е семейство.
---------- Post added at 14:00 ---------- Previous post was at 13:06 ----------
Ну в общем все мои поиски Xilinx ISE Design Suit 14.7 окончились неудачей, не смог найти торрент, чтобы скачать. Придётся качать 14.4 и довольствоваться ею, соответственно изучать её и осваивать в мелких деталях. Если до вечера ничего не найду, то поставлю 14.4 на закачку, так как торрент у меня работает только ночью с 00:00 до 06:00, потом Мегафон зараза режит и ничего не качается.
С офф сайта не судьба качать ? Таместь докачка "при обрыве".
С торрента и то 3...4 ночи будет качаться.
Маньяк, млин.... :)
Ну в общем все мои поиски Xilinx ISE Design Suit 14.7 окончились неудачей, не смог найти торрент, чтобы скачать. Придётся качать 14.4
А если качать каку-нить 10.3, то всего в одну ночь уложишься наверняка :)
Ты как Микка_А, потратишь миллион бабла и времени на подготовку, а потом задвинешь это дело нафиг, не начав...
Попробовал, ничерта не качает и ничего не работает, я про закачку, не такие способы не для моего интернета.
С торрента и то 3...4 ночи будет качаться.
А проц поставил на мать 3,2ГГц, нашёлся.
1) логинимся
2) firefox+java +ссылка на скачивание файл *.dlm>= запускается загрузчик на джаве.
там есть кнопки пауза и итд
3) качаем, надо выключить комп, нажимаем паузу. потом включаем комп
"запускаем" *.dlm.
Как то вот так (примерно - может где-то на чудил...)
14.7 для "всех" кроме 7 семейства(они там только на понюхать). 7 и 8 реализовано в вивадо.
Вообще изучать можно что угодно и как угодно. но если это для "профессии" - надо "плотно" знать английский и заниматься тематикой 24 часа в сутки.
Да просто я к тому, что... Когда я начинал знакомиться с ПЛИС, то мучил круглосуточно банальную мелкую CPLD и древний МАКС+ в качестве среды разработки. Это - предок Квартуса. Мне была интересна технология, а не "последние веяния". Тут как в анекдоте, "вам шашечки или ехать?" :)
Блин как сложно, сейчас в мире всё делается проще ТОРРЕНТ и ВСЁ...
С офф.сайта качается быстрее чем с любого торрента.
Как вариант
http://nnm.me/blogs/nucatkluca2010/xilinx-ise-design-suite-14-7-final-iso/
но за качество не ручаюсь. Лично я качаю только с офф.
Но вивадо "очень симпотично" в плане среды разработки. оно "как бы более целостно и стройно". vhdl, verilog, systemverilog. hls итд. но только для 7 и 8 и далее семейства.
Всех с Новым Годом. Пошёл готовить холодец...
Уже разлил по таре холодец - застывает нынче.
Изучение ПЛИС
(изучено: 3,8356151%).
[#_________________________________________________]
Когда в товарищах согласья нет,
На лад их дело не пойдет,
И выйдет из него не дело, только мука.
Однажды Лебедь, Рак да Щука
Везти с поклажей воз взялись
И вместе трое все в него впряглись;
Из кожи лезут вон, а возу все нет ходу!
Поклажа бы для них казалась и легка:
Да Лебедь рвется в облака,
Рак пятится назад, а Щука тянет в воду.
Кто виноват из них, кто прав - судить не нам;
Да только воз и ныне там.
http://www.youtube.com
http://www.youtube.com
s1 <= ((b1 and (not b2)) or (not b1) and b2));
с1 <= b1 and b2;
Но мне думается автор накосяпорил, так как по мне, правильнее будет так:
s1 <= ((not b1) and b2) or (b1 and (not b2));
с1 <= b1 and b2;
Вот интересно, кто тут прав, автор или я.
Это одно и тоже. Перестановка аргументов "OR" ничего не меняет.
vfiuchcikicshuusrch
25.01.2015, 20:57
знатоки, а подскажите почему в ISE Design Suite 14.7 можно создать проект для XC95.. серии ПЛИС, а в PlanAhead этой же версии нельзя.
хотя вроде как в pdf-ке на описание PlanAhead в поддерживаемых ПЛИСах есть XC9500 серия...
знатоки, а подскажите почему в ISE Design Suite 14.7 можно создать проект для XC95.. серии ПЛИС, а в PlanAhead этой же версии нельзя.
хотя вроде как в pdf-ке на описание PlanAhead в поддерживаемых ПЛИСах есть XC9500 серия...
Затем что планахеад это промежуточный вариант вивады. а в самой виваде нет таже 6-го спартана. и является дополнительным "костылем" для исе.
опечатки везде бывают...
пс если ошибся где либо - то не сильно.
vfiuchcikicshuusrch
26.01.2015, 08:19
ну ащее)))
спасибо. я думал что это полноценный софт, только для чего я так и не понял, вроде всё тоже самое в ISE есть... получается что он только место занимает.
будем знать.
balu_dark
28.01.2015, 19:56
Варианты - китай( по слухам ebay дешевле чисто китайских аукционов),
http://starterkit.ru/html/index.php
терра электроника неплохие отладочные платы делала, ну и ближайшие радиомагазины покрупнее обойдите.
Есть вариант - взять платки на торговом разделе форума. Но вроде именно с Xilinx наши не делали платы.
balu_dark
28.01.2015, 22:02
А - ну про него я забыл. Его вроде то начали делать то заглохло в плане плат - просто не в курсе.
а на китах нашел такое :
http://starterkit.ru/html/index.php?name=shop&op=view&id=60&word=xilinx
Но китайские аналоги должны вроде быть дешевле. Хотя с нынешним курсом - я уже не уверен.
balu_dark
28.01.2015, 23:07
понимаете - 6й спартан вы выбросите ОЧЕНЬ НЕ СКОРО, за это время наваяете на нет уйму проектов и выучите и язык и нюансы ксайлинксов.
Чисто теоретически - спартан 3 будет стоить не намного дешевле. Зато через лет 5 6й вы еще достанете а вот 3й скорее всего - нет.
Как говорят если не ошибаюсь англичане - "мы не настолько богаты, чтобы покупать дешёвые вещи." Просто именно у китов - вроде не нашел более дешёвый вариант.
Жесть. У Терра цены - просто космос. Стартеркит нервно курит в сторонке.
http://www.terraelectronica.ru/catalog.php?ID=584&Page=1&search=xilinx&Sort=price
MAX17012, для обучения начните с простого и игрового, к примеру проект μGalaksija (http://galaksija.petnica.rs/index.php/). Если не забросите и сможете на базе него самостоятельно сделать PingPong, тетрис, морской бой... Определитесь с направлением и ответите для себя на вопрос - а нафиг оно мне надо :) Переходите на более сложное как Pipistrello (http://pipistrello.saanlima.com/index.php?title=Welcome_to_Pipistrello), остальное железо уже больше для работы, чем для хобби.
Тогда опять возникает вопрос, а чем я этот 6-й буду "шить", ведь программатор Xilinx USB JTAG (http://starterkit.ru/html/index.php?name=shop&op=view&id=17) его не шьёт.
Должен шить.
http://bovs.org/post/121/deshevyi-samodelnyi-programmator-dlya-plis-xilinx-fpgalink
vfiuchcikicshuusrch
29.01.2015, 11:50
я сейчас попробовал проект в альтере, всё заработало и я был рад, затем я перенес его в хилинх, пока не проверял.
кол-во занимаемых макроячеек одинаково получилось.
но у альтеры например epm7032 - 32 макроячейки и у хилинха xc9536 - 36 макроячеек
проект у меня компилируется в 33 макроячейки (если поиграть с расстановкой пинов, то получится 32 и уместится в альтеру).
цена альтеры 500р сейчас стала, цена хилинха 200р (грубо на алиэкспрессе смотрел)
да и кстати я снял хилинх с трёх разных устройств и у них не залочены JTAG пины, это для халявщиков вообще щастье.
у меня есть xc9536xl, xcs20xl и xcs30xl (spartan 1 видимо)
собственно вопрос напрашивается сам сабой) что в альтерах лучше
ведь логичнее взять хилинх и любить его пока не появится что нибудь более дешевое и простое :)
может просвятите ?
п.с. это моё имхо, и оно такое потому что я пока не очень то понимаю всё это дело)
я сейчас попробовал проект в альтере, всё заработало и я был рад, затем я перенес его в хилинх, пока не проверял.
кол-во занимаемых макроячеек одинаково получилось.
но у альтеры например epm7032 - 32 макроячейки и у хилинха xc9536 - 36 макроячеек
проект у меня компилируется в 33 макроячейки (если поиграть с расстановкой пинов, то получится 32 и уместится в альтеру).
цена альтеры 500р сейчас стала, цена хилинха 200р (грубо на алиэкспрессе смотрел)
да и кстати я снял хилинх с трёх разных устройств и у них не залочены JTAG пины, это для халявщиков вообще щастье.
у меня есть xc9536xl, xcs20xl и xcs30xl (spartan 1 видимо)
собственно вопрос напрашивается сам сабой) что в альтерах лучше
ведь логичнее взять хилинх и любить его пока не появится что нибудь более дешевое и простое :)
может просвятите ?
п.с. это моё имхо, и оно такое потому что я пока не очень то понимаю всё это дело)
Вы подняли "религиозную" тему. За это "светит статья"...
Пользуйте то что у Вас под рукой - оно всегда удобнее, чем всё остальное на расстоянии. И будет вам "хорошо". :smile:
vfiuchcikicshuusrch
29.01.2015, 13:30
spartan 1 не существует, это серия XC9500
спартан серия не xc9500, спартан это я про другие 2 чипа (xcs20xl и xcs30xl), на них так и написано спартан)
я ожидал похожего ответа, что они по сути одно и тоже.
спасибо за подтверждение ожиданий :)
spartan 1 не существует, это серия XC9500, и это CPLD, а не FPGA, что ни есть хорошо. В общем уже очень устаревшая серия ПЛИС. Хотя никто не мешает её применять с успехом.
На мой взгляд, это вопросы веры, то есть они в общем равнозначны, какое-то семейство у альтер получше получилось какое-то у Xilinx семейство порвало альтуровское.
Не понял почему? У них одинаковые потроха? Или можно его "перепрошить". Хотя ещё на водит на размышление, что конфигурационное ППЗУ находится снаружи у FPGA, а программатор шьёт ППЗУ. В общим немного запутался.
Пока есть желание накопить деньжат и взять тот, что за 4100 программатор.
Может ещё какой присоветуете, только заводской, так как собрать самому, пока не вариант для меня.
Официальный "Platform Cable USB II" там стоит $225. Другой официальный (и совместим с софтом) от $50 до $100. (всё в этой теме указано) Всё остальное самопал и клоны.
Достаточно современные отладочные платы имеют "встроенный программатор" - требуется только софт и usb-шнурок.
По поводу "что шъётся": "любая схема на плисе от xilinx (FPGA)" имеет микросхему памяти (загрузочная - типа flash) и сама плиса (типа озу).
По включению питания прошивка перетекает из flash в озу и плиса начинает работать. Так вот прошивать ("программатором") можно как flash так и плис (для быстрой отладки без "передергивания питания").
Насчет spartan-3a и spartan-3an. Я лично не помню (смотри сайт xilinx) у кого-то из них flash расположена в одном корпусе вместе с FPGA (2в1). Все остальные FPGA (не CPLD) имеют внешнюю flash.
vfiuchcikicshuusrch
29.01.2015, 13:54
раз уж начал тут спрашивать, спрошу про среду ISE
компилирую проект и куча предупреждений вываливается:
WARNING:DesignEntry - Instance "XLXI_1" is off grid and will be corrected.
WARNING:DesignEntry - Moved by (-1,0) from (4273,3552) to (4272,3552)
типо смещение на 1 %)
что это вообще значит, и нафига предупреждения из-за какой то ерунды ?
и как это поправить ? а то этих предупреждений больше чем полезной инфы)))
гугл не помог =\
Из программаторов пока нашёл следующее:
1). Xilinx USB JTAG программатор, аналог Xilinx USB Cable. (http://starterkit.ru/html/index.php?name=shop&op=view&id=17) 4100 руб.
2). XB-XUP USB-JTAG. Xilinx Platform Cable USB (https://ldm-systems.ru/product/16034) 5850 руб.
3). HW-USB-II-G, Загрузочный кабель Platform Cable USB II (http://www.chipdip.ru/product/hw-usb-ii-g/) 42.900 руб. (Что-то нереальное).
Склоняюсь пока к варианту 2.
1) "реверс разработка"
2) хз - сайт не открывается
3) судя по всем оригинал.
Вот это второй "официальный" поставщик демо плат и программаторов.
http://www.digilentinc.com/Products/Catalog.cfm?NavPath=2,395&Cat=5
как вариант : aneon. дешево и сердито.
Всё зависит от Ваших потребностей:
1) Для дома для семьи - чтонибудь простое и бюджетное
2) если Вы студент - аналогично 1), но современное семейство 7 и 8
3) если просто зажечь лампочку типа "Я крут!!!" можно и дешевое самое (и в прокат взять). а можно обойтись и симулятором.
4) Если по работе нужна обработка видео/звук/радио/радары/шифрование - то самое свежее и дорогое от $1000 и до бесконечности.
---------- Post added at 14:00 ---------- Previous post was at 13:57 ----------
раз уж начал тут спрашивать, спрошу про среду ISE
компилирую проект и куча предупреждений вываливается:
WARNING:DesignEntry - Instance "XLXI_1" is off grid and will be corrected.
WARNING:DesignEntry - Moved by (-1,0) from (4273,3552) to (4272,3552)
типо смещение на 1 %)
что это вообще значит, и нафига предупреждения из-за какой то ерунды ?
и как это поправить ? а то этих предупреждений больше чем полезной инфы)))
гугл не помог =\
Если это про CPLD то я пасс... ни разу не пользовал.
Если это "схематик едитор" то он по слухам глючен.
vfiuchcikicshuusrch
29.01.2015, 14:20
юзаю 14.7
и это да схематик редактор.
он сам назначает пины у чипа.
а как их самому переназначить не пойму. =\
когда захожу в окно где их как бы можно переназначить у меня слева вообще какието неизвестные пины. =\
в конце концов говорит что всё скомпилировано удачно)
vfiuchcikicshuusrch
29.01.2015, 14:33
MAX17012,
блин да там даже лпт проггер стоит 1500р %) это ппц.
https://ldm-systems.ru/product/16033
2) то же клон.
Лично я признаю только оригиналы.
Клоны могут не работать в некоторых программах ISE/Vivado.
и не поддерживают современные плис. в части напряжения "программирования", типов программируемых микросхем (bpi и spi ....) итд
Каждый клон надо смотреть конкретно "на практике".
Вы подняли "религиозную" тему. За это "светит статья"...
Пользуйте то что у Вас под рукой - оно всегда удобнее, чем всё остальное на расстоянии. И будет вам "хорошо". :smile:
Да нет тут религии, сильно не совру, но алтера на рынке пост Союза просто раньше появилась, материалов для старта больше, + видел совершенно не секретную фотку, с современной нашей РЛС , где вся плата утыкана циклонами, + для "программинга" отечественный плис, используется квартус и мах, краем уха слышал, что купили и освоили какие то железяки у альтеры.
Да нет тут религии, сильно не совру, но алтера на рынке пост Союза просто раньше появилась, материалов для старта больше, + видел совершенно не секретную фотку, с современной нашей РЛС , где вся плата утыкана циклонами, + для "программинга" отечественный плис, используется квартус и мах, краем уха слышал, что купили и освоили какие то железяки у альтеры.
15 лет тому назад была и алтера и ксайлинк. дальше не помню. ПЛИСЫ делают в Воронеже в керамике и золоте. крайнии версии это как xc3s400 (примерно). "программируются" в квартусе (макс+). + доп. ПО своего разлива. Разработано для военных и по цене "космос". каждый решает сам что использовать в конкретной задаче исходя из своих возможностей и знаний и пожеланий заказчика... гдето лучше алтера гдето ксайлинкс гдето латтис и еже с ними....
PS: "Это холивар" на тематических форумах...
цена альтеры 500р сейчас стала, цена хилинха 200р (грубо на алиэкспрессе смотрел)
Да ну... 150 рублей альтеры на али, даже по сегодняшнему курсу.
А вообще, это как за футбольную команду болеть. Разницы - никакой, но какая-то ближе :)
И у альтер не надо гадать, подойдет ли программатор? :)
vfiuchcikicshuusrch
29.01.2015, 19:18
там где 150, доставка стоит ещё 250 и более рублей)
это как бы... не интересно.
я как бы не гадал, собрал лпт параллельный проггер 3 (которые везде по 1500р продают походу) он пока все мои 3 чипика видит. хз
подскажите как пины в ISE назначать. =\ не пойму вообще чо у меня ПО тупит. какие то левые названия в окне назначения пинов пишет %)
после компиляции софт сам пины расставил как захотел. впринципе не плохо, но хотелось бы по своему.
там где 150, доставка стоит ещё 250 и более рублей)
Хоть бы вопрос изучил :)
Доставка бесплатно (http://ru.aliexpress.com/item/IC-EPM7032-EPM7032SLC44-10N-Original-authentic-and-new-Free-Shipping-IC/32257435896.html).
---------- Post added at 20:47 ---------- Previous post was at 20:45 ----------
А вот эти (http://ru.aliexpress.com/item/IC-EPM3032-EPM3032ATC44-10N-Original-authentic-and-new-Free-Shipping-IC/32256931591.html) я сам покупал себе, по 95 рублей.
Доставка тоже бесплатно.
Хоть бы вопрос изучил :)
Доставка бесплатно (http://ru.aliexpress.com/item/IC-EPM7032-EPM7032SLC44-10N-Original-authentic-and-new-Free-Shipping-IC/32257435896.html).
хе хе похоже "склады" у меня не зря запасами обрастали. смотрю вот на упаковку epm240 xc95, няшки:) надо акцию деда мороза запускать:) к 23 февраля :)
vfiuchcikicshuusrch
29.01.2015, 22:18
zebest, я с этих же плат и смотрел :) только модификация другая.
ну насчет залоченности хз.. не проверял, но чип в IMPACT определился правильно.
стереть то наверно в любом случае можно)
Ewgeny7, нужны 7032 и в tqfp. ладно поищу ещё. спс за ссылки.
zebest, я с этих же плат и смотрел :) только модификация другая.
ну насчет залоченности хз.. не проверял, но чип в IMPACT определился правильно.
стереть то наверно в любом случае можно)
Ewgeny7, нужны 7032 и в tqfp. ладно поищу ещё. спс за ссылки.
прислать?:v2_conf2:
vfiuchcikicshuusrch
30.01.2015, 08:59
Totem, нене спасибо, но я хочу в серию девайс запустить и немного подзаработать) но если, честно не хочу этим заниматься, но возможно стоит попробовать.
zebest, нет, старые варианты с pci.
---------- Post added at 08:59 ---------- Previous post was at 08:42 ----------
"параллельный" и по 600 р продают, да не у всех LPT уже есть. Не суть.
дык его из подручных средств собрать можно, не потратив ни копейки.. 600 это уже почти в 2раза дешевле.. но 1500 это перебор.. я и на алиэкспресс видел по таким ценам.. жуть!!!
пины же можно в текстовом файле назначить?? в *ucf ?
он у меня размер этого файла 0 байт %)
у меня размер этого файла 0 байт
а елси так?
http://logways.ru/2011/08/23/prodolzhenie-rabotyi-rabotyi-s-ise-webpack-naznach/
vfiuchcikicshuusrch
30.01.2015, 09:44
zebest, так и делаю, дома буду подробннее отпишусь. :)
vfiuchcikicshuusrch
30.01.2015, 19:32
http://savepic.net/6407611m.jpg (http://savepic.net/6407611.htm)
вот такая хрень вобщем.
сам файл main.ucf создается 0 байт. и ппц.
я пробовал до этого проекта, простенькие делать схемки, и пины нормально назначались.. а когда собрал большой проект, то фигу =\ пины нельзя назначит почемуто, и пишит что IO Ping какие то l0 и тд.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot