уважаемые одмины и/или модеры. зокрепите эту тему гденить повыше плиз...
Вид для печати
уважаемые одмины и/или модеры. зокрепите эту тему гденить повыше плиз...
Закрепляю, поскольку считаю эту тему важной. Долой HDL-безграмотность среди пролетариата! :)
alost, из тебя замечательный учитель получается! Сегодня сидел на работе и расковыривал твой первый тутор по mmc. Всё просто и понятно. Спасибо! Продолжай в том же духе!
З.Ы. Сегодня оплатил счет от "Элитан"а, где Cyclone I стоит 16 руб. а EPM7128 - 16.50 :)
Как придет от них хоть какая-то информация сообщу.
Спасибо всем!:)
Обновил вложение в "сообщении №39" этой темы!Это уже законченная часть.Для желающих в формате PDF (легче читается) :ссылка для скачивания файла: http://25janvary.ifolder.ru/10246228 (доступен до: 2009-02-26 12:10:14).Просто не знаю,как разместить такой большой файл на ФОРУМЕ...:(
Анонс следующей части:Подключаем ROM и YM2149.
zxpk.untergrund.net
Добавлено через 15 секунд
До 16 метров...
А как в верилоге сказать:
else if (clock'event and clock='0') then ?
так else if ((clock)== 0) begin ?
а разве так нельзя?
always @(posedge clock, res)
begin
if (res==0) begin
del<=00;
end
else if ((clock)==0) begin
del<=del+1;
end
end
ведь:
process(clock,res) - реагируем на событие
begin
if res='0' then
del <= "00";
elsif (clock'event and clock='0') then
del <= del + 1;
end if;
end process;
Ну зачем же, если все красиво в рамках синхронной логики решаемо...
Темболее асихронные машины состояния это теория на практике из за рисков выливается в один большой шумный глюк
process(clock,res) - реагируем на событие
begin
if res='0' then
del <= "00";
elsif (clock'event and clock='0') then
del <= del + 1;
end if;
end process;
always @ (negedge clock or negedge res)
if (!res)
del = 2'b00
else
del = del + 1
К тому же синтезаторы больше приучены к сихронным вещам, по крайней мере лучше оптимизируют
господа подскажите на вскидку сколько по максимуму ног можно задействовать под собственные нужды в EPM7032..44 без спец программатора?
он имел ввиду что кроме питания и земли - в некоторых чипах джитаг пины нельзя юзать как пользовательские.
Можно, по окончании загрузки и самосброса альтеры жтаг станет недоступен.
Добавлено через 6 минут
Оффтоп, но классный тотализатор получается :)
Я уже сообщал о том, что "Элитан" тут раздает подарки :v2_clap2:
В понедельник они цены пофиксили.
В выходные я отправил туды три заказа под разными номерами.
И один успел оплатить. Сегодня получаю письма из Элитана, типа, простите, но заказы 11494 и 11488 не оплачивайте, пожалуйста :v2_laugh:
Про оплаченный третий заказ 11527 ни слова. Зато на сайте магазина в "своих заказах" наблюдаю такое:
Информация о заказе:
Номер заказа: 11527Z Дата заказа: 24-01-2009 23:38
Получена оплата: 562.53 руб. Дата оплаты: 27-01-2009 16:26
Состояние заказа:Готовится к отгрузке Дата обновления: 27-01-2009 16:27
Ваш менеджер: Васильев Василий Викторович т.(3412) 503330 доб.109 vv@elitan.ru
Наименование товара Артикул Цена (рубли) Количество Сумма (рубли) Плановая
дата
отгрузки
ATMEGA32-16PU@ATMEL 3.72 8 29.76 03-02-2009
EP1C3T100C8N@ALTERA 14.70 2 29.40 03-02-2009
EP1C3T100I7N@ALTERA 22.70 2 45.40 03-02-2009
EPCS16SI8N@ALTERA 14.50 2 29.00 03-02-2009
EPM3064ALC44-10@ALTERA 4.29 8 34.32 03-02-2009
EPM3128ATC100-10N@ALTERA 5.93 5 29.65 03-02-2009
EPM3256ATC144-7N@ALTERA 16.00 2 32.00 03-02-2009
EPM7128SLC84-15N@ALTERA 16.50 2 33.00 03-02-2009
Доставка 300.00
Итого 562.53
Итак, кто проголосует за то, что халява прокатит? :)
Считай:
28 I/O общего назначения
4 Global/Input (можно юзать как обычные, но только на ВХОД)
4 JTAG/I/O
Вот и всё для 7000 44пин.
Добавлено через 4 минуты
JTAG ports are available in MAX7000S only (Altera datasheet). Микка кувыркался с какимито МАХ7000 просто, вроде бы.
Добавлено через 23 минуты
Как нужно создавать проект в квактусе чтобы заработал симулятор?
А то получаю "No simulation input file..."
Стандартный способ.File>New Pr. Wiz.>(тока перед этим лучше создать где-нить папочку с именем проекта и чтобы название было как в vhd файле) появится окно мастера,где надо выбрать раб.директорию(это как раз эта папочка),имя этого файла и имя проекта появится автоматически с именем рабочей папки и кликаем далее.в следюокне Мастер предложит присоединить к проекту design file,если есть ,что,выбираем откуда и ADD или ДАЛЕЕ ,если нет.В принципе можно остановиться и
нажать ФИНИШ.В итоге должно открыться окно проекта с design file(если присоединил) или пустое окно,если нет.Вы уже в созданном проекте!
Далее если design file нет,то File>New>окно выбора типа файла,выбираем vhd>OK.
Раскрывается файл с расширением vhd и с дурацким именем>Save as...!Уверен,что появится окно с предложением о сохранении с именем вашего проекта!
При первой Симуляции он будет орать No simulation input file.Вариант 1.
Когда он заругался,внизу окна жмем OPEN>вываливается окнос расширением .vwf и дур.именем,также сохраняем его как имя проекта!
Добавлено через 8 минут
Жмем СТАРТ(предварительно проверив,стоитли выборка автоприсоединения пинов!Пины и сигналы,если надо,присоединяем,удаляем, ликнув в поле с именем NAME
А кликнув по пину,назначаем уму разные характеристики,ну типа частоты,начального уровня и т.д.
Вариант второй,в меню "MAX+PLUS11!(это слева от File) выбираем Вэйвформ Редактор,далее аналогично ,переименоввываем и присоединяем.
Добавлено через 6 минут
После компиляции проекта,если все ОК и квактус кроме предупреждений не выдал,жмем на значок Симулятора!Вываливается окно СИМУЛЯТОР ТУЛ с настройками!Внизу окна 2 кнопки: START и OPEN !такое было?
Добавлено через 8 минут
Сделай все заново,как в сообщении 63!Меньше путаницы потом будет!
Тэкс, окно открыл вручную через меню, файл создал. На экране почему-то присутствуют только пины OUT, ищу как в симулятор вытащить IN...
Добавил в сообщение №39 вторую часть в формате doc.в архиве также полный проект(1+2 часть).и немного описал работу в Квартусе с симулятором.
В формате PDF :http://zxpk.untergrund.net/downloads.php?id=307 ,а как сделать что бы ссылка покороче была ,типа ЧАСТЬ2 ?
alost, спасибо еще раз!
С симулятором вчера разобрался.
Ковыряясь с VHDL набрел на непонятки в реализации двунаправленного обмена через пины. Чтоб компилятор не ругался на "совместное руление" несколькими источниками.
Встречался с таким ругательством:mad:Это возможно в 2 случаях: при компиляции,выдается ошибка и он останавливается ,и когда компилятор все пропускает,а вот фиттер,а потом и симулятор выдает предупреждение что не может подключить "такие-то" сигналы.Напиши поконкретнее,а лучше напиши процессы.Как минимум это два процесса.В общем случае такие конфликты удается развести организацией мультеплексирования конфликтующих сигналов и сведения их в один процесс.
С глюками сам разобрался (вроде бы).
Выкладываю на всеобщее "обчихивание" свой первый проект на VHDL.
Сие произведение называется СМУК-2. Он уже реально сделан и успешно работает на моем Скорпионе (а скоро будет не только на моем, есть народ также собирающий его). Правда, прошивка сделана целиком на схемном вводе.
Теперь пришла пора попробовать его на HDL :v2_finge: :v2_rolley
Все нюансы программы я писал на основе туториала alost'a (плюс свои извращения). Очень не нравится мне код в районе регистра версий (process H), слишком громоздко. Да и вообще всё наверное корявенько :)
Приму любые рекомендации.
В реале прошивку проверю только в понедельник, ибо комп со СМУКом на работе.
Quartus II (6.0) подойдёт для дел всех этих?
пусть будет лучше хоть SMUC+ , а то на 2 как-то не тянет.. новшеств в нём собсно и нет почти.. практически рестайлинг, поэтому предлагаю оставить двойку для будущих инкарнаций рассчитанных на более существенные изменения :)
..кстати, а чё здесь, а не в топике про смук прошивки выкладывать?
у меня вылетело два "внимания"
Warning: Found pins functioning as undefined clocks and/or memory enables
Info: Assuming node "clock" is an undefined clock
и
Warning: Found 10 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew
Info: Detected gated clock "vsync~0" as buffer
Info: Detected ripple clock "vcnt[3]" as buffer
Info: Detected ripple clock "vcnt[5]" as buffer
Info: Detected gated clock "vsync~33" as buffer
Info: Detected ripple clock "vcnt[7]" as buffer
Info: Detected ripple clock "vcnt[4]" as buffer
Info: Detected ripple clock "vcnt[6]" as buffer
Info: Detected ripple clock "hsync" as buffer
Info: Detected ripple clock "vcnt[8]" as buffer
Info: Detected ripple clock "del[1]" as buffer
чё за баян?!
это я создал проэкт, назвал его, создал vhdl файл, обозвал так же как и проэкт, создал wave чего то там, сохранил с именем прожекта...
сделал старт синтезис, старт фиттер...а потом симуляцию и оп...вот таких два мессежда...
и кстате, не совсем понял как и где схему смотреть...
В процеесе Н конфликт,это тот случай когда компилятор пропускает,а симулятор предупреждает :"трата-та ..."db3" holds its previous value in every path with no new value assignment, which may create a combinational loop in the current design."
Можно так ,и упростить чуть:
1 вариант,в пор. упрощения:
H: process(csm,a2,a13,a15,rd)
begin
if (csm='1') and (a15='0') and (a13='0') and (rd='0') then
case a2 is --оператор ВЫБОРА!
when '0' => db3 <='0';
db5 <='1';
db6 <='0';
db7 <='0';
when '1' => db3 <='0';
db5 <='0';
db6 <='0';
db7 <='0';
end case;
else db3 <='Z'; --Иначе относится к условию IF
db5 <='Z';
db6 <='Z';
db7 <='Z';
end if;
end process;
2 вар.:
H: process(csm,a2,a13,a15,rd,a2)
variable sel:std_logic_vector(4 downto 0);
begin
sel:=csm & a15 & a13 & rd & a2 ;
case sel is --оператор ВЫБОРА!
when "10000" => db3 <='0';
db5 <='1';
db6 <='0';
db7 <='0';
when "10001" => db3 <='0';
db5 <='0';
db6 <='0';
db7 <='0';
when others => db3 <='Z';
db5 <='Z';
db6 <='Z';
db7 <='Z';
end case;
end process;
и это не предел!вар.2 можно свести к 10 строкам,если сигналы DB организовать как вектор.Проще потом манипулировать!db4 переименовать в db3,а db3>db4.и создать db: inout std_logic_vector(7 downto 4); Четыре строки сразу становятся одной!
Добавлено через 11 минут
На такого типа warnung симулятора пока не обращай внимание,это не критические!!!:)Вот что он написал,дословно:Предупреждение: Найденны 10 узлов в путях тактового генератора, которые могут действовать как рябь и/или пропущенные такты т.е.возможно,а может и нет(это он предупреждает,но симулюцию делает)!
как буфер (а), приводящий к расфазировке тактовых сигнало
а вот такого типа:
Warning: VHDL Process Statement warning at SMUC.vhd(52): signal or variable "db3" may not be assigned a new value in every possible path through the Process Statement. Signal or
variable "db3" holds its previous value in every path with no new value assignment, which may create a combinational loop in the current design. это плохо!
Добавлено через 12 минут
Пойдет!
Добавлено через 13 минут
Я вообще юзаю 5-ю версию!А картинки тока в полной версии,в web RTL вьювера нет!!!:mad:
У меня квактус 8.1 web. А мою RTL-ку вы видели. Ищите и обрящите! :)
Спасибо! буду разгребать!
ПыСы: ждёмс третью часть туториала :)
Можно и так. Или, как я уже пару раз называл его - SMUC RT (РеТрэкинг :) )
Дык это и не прошивка, а "домашнее задание" сдаю учителю... :)
Еще вариант:
H: process(csm,a2,a13,a15,rd)
begin
if (csm='1') and (a15='0') and (a13='0') and (rd='0') then
db3<='0';db6<='0';db7<='0'; --эти всегда в '0' при условии IF!
case a2 is --оператор ВЫБОРА,т.е выбор след.строки определяютя состоянием a2!
when '0' => db5 <='1';
when '1' => db5 <='0';
end case;
else db3 <='Z'; --Иначе , при невыполнении условия IF(всё в Z!
db5 <='Z';
db6 <='Z';
db7 <='Z';
end if;
end process; --можно тоже на 3 строки сократить!
Добавлено через 3 минуты
Класс!А Technology Map Viewer есть в Web 8.1?
Добавлено через 6 минут
Да я сам тока "учюсь",а "туториал"-это типа дневника сумасшедшего,пособие как с нуля познать высокую технологию!:confused:
у меня полная версия квартуса, версия которая указана выше... 6.0.
плюс ещё какие то сервис паки, мегакоре какой то pci четого там...
так всётакки, как перейти в режим просмотра полученой схемы и как можно попробовать порисовать схему, а не на языке...хочется и так попробовать тоже...