А можно ли на входе ПЛИС подтягивающие резисторы запрограммировать?
Вид для печати
А можно ли на входе ПЛИС подтягивающие резисторы запрограммировать?
Вроде нет...
Какая самая короткая программа для прошивки EPM3128ATC100. Файл скомпилирован в QUARTUS II 9.0 Web Edition. Киньте, пожалуйста, ссылку на программу и инструкцию по прошивке.
Самая коротка что я знаю на AHDL:
Код:Subdesign short
(
inp:input;
out:output;
)
begin
out=in;
end;
Надо все-таки еще контролировать правильность записи...
Извините, что неправильно спросил. Имелась ввиду альтернатива QUARTUSу, который весит больше гигабайта, чтобы не разрабатывать программы, а чтобы каждый желающий мог собрать плату с ПЛИС и мог прошить прошивку, которую напишет и скомпилирует другой человек.
Quartus Programmer
искать тут
можно какой нить 6 версии 50мб
Скиньте пожалуйста у кого пароль есть на OpenCore свежую версию ядрышка
http://www.opencores.org/project,tv80,overview
а то у меня, что-то зарегиться не удается.
Поставил на работе Quartus, все-равно на чем-то тренироваться надо и еще если можно USB
http://www.opencores.org/project,usbhostslave,overview
на мой мейл avisv, на Яndex-е.
Скачал и выслал, проверяй почту.Цитата:
Сообщение от andrews
Этот архив весит 18.5 Мбайт :)Цитата:
Сообщение от andrews
Я его скачал, надо будет, куда-нибудь выложу.
Всё получил, спасибо огромное! И написал письмо в ответ на Ваше. Выложить можно на Яndex-е, например так
tv80_latest.tar.gz.html
Для этого можно загрузить один или несколько файлов со своего компьтера с этой страницы
http://narod.yandex.ru/
Привет всем!
Есть у меня вопрос про ПЛИС, в частности про CPLD Altera EPM3064ALC44 :)
Как я понимаю - у всем подобных альтеровских ПЛИС-ок есть несколько напряжений питания - питание ядра, и несколько питаний для портов. Дык собственно вопрос:
В даташите на серию EPM3064 указано, что она 5v TTL tolerant. Тоесть чтобы её входы и выходы стали 5v TTL уровня, на VCC необходимого порта засадить 5v? Я правильно понимаю?
Тогда получается, что на все VCCINT и VCCIO ПЛИСины надо подавать 3.3v? А на входы и выходы ПЛИСины можно прямо без всяких преобразователей садить входы и выходы обычных 5v TTL микросхем?
да
Развеселился я что-то на этой неделе и решил подключить к спектруму FPGA с засунутой моделью AY. Взял "ленинград-2", сделал переходник к плате... В общем, заработало. Звук вывожу через PWM, тактируемый от 3,5МГц - больше никакой частоты на разъеме не было.
Собственно, к чему я все это... Не очень хороший звук и думаю, что модель AY пошаливает. Модель я использовал ту же самую, что и AlexFreed в своем спектруме на DE1. Просьба - киньте в меня, пожалуйста, модели AY, у кого какие есть. Желательно, чтобы они могли работать от родной AY-частоты для спектрума - 1,7МГц. Емейл alex (sobak) speccyland.net
И еще просьба - скажите, как правильнее всего замешать три канала в один?
Какие игры под 48к работают с AY? Чтобы было, на чем полчше проверить. Exolon уже попробовал :)
эээ... если 3 канала мешать - делить надо на 3, чтобы быть в том же диапазоне отсчетов, что и 1 канал. т.е. все зависит от запаса по разрядности звука.
последний вариант лучше, т.к. ничего не теряется, но надо учитывать диапазон.
Пока что оставил формулу
wire [8:0] audio = ((ay_A/2) + (ay_B/2) + (ay_C/2));
Лидирует модель AY8910 от ILoveSpeccy - опробовано на Exolon, Lyra II и Cybernoid 2. На игрухах звук почти нормальный, а вот в "Лире" весьма плохо. Правда, у меня AY работает только на запись, может, как-то это сказывается...
PS: В общем, теперь работает нормально или почти нормально: сделал чтение из AY выяснил, что после запуска модели необходим сброс :)
Если кому интересно, фото, примерно 600кб. За качество не пинайте :)
http://crazyroom.ru/files/AYFPGA1.jpg
http://crazyroom.ru/files/AYFPGA2.jpg
Займусь BDI...
http://zx.pk.ru/showthread.php?p=218628
Веселье продолжается... :)
Ничего не понимаю, подскажите, где лопухнулся. Прикручиваю ПЗУ TRDOS к спектруму. Схема на VHDL, все работает:
Скрытый текст
process(nRESET,CLOCK)
begin
if( nRESET = '0' ) then DOS <= '0';
elsif (CLOCK'event and CLOCK = '1') and nM1 = '0' and nRD = '0' and nMREQ = '0' and (ADRESS(15 downto 8) = "00111101") and ROMSEL = '1' then DOS <= '1';
elsif (CLOCK'event and CLOCK = '1') and nM1 = '0' and nRD = '0' and nMREQ = '0' and (ADRESS(14) = '1' or ADRESS(15) = '1') then DOS <= '0';
end if;
end process;
[свернуть]
Схема на верилоге, нифига не работает, при выходе в тырдос происходит сброс:
Скрытый текст
always @(nRESET or CLOCK)
begin
if(~nRESET) TRDOS <= 1'b0;
else if(CLOCK)
begin
if(~nM1 && ~nRD && ~nMREQ)
begin
if(ADRESS[15:8] == 8'b00111101) TRDOS <= 1'b1;
else if(ADRESS[14] || ADRESS[15]) TRDOS <= 1'b0;
end
end
end
[свернуть]
Подскажите, где в тексте верилога ошибка?
Тебе надо, чтобы always срабатывал по уровню CLOCK или по фронту? Если по фронту, то используй always @(posedge CLOCK) или @(negedge CLOCK), в зависимости от фронта.
А кстати да, куда делся ROMSEL? в VHDL он есть, в Verilog'овском коде его уже нет.
Да, согласен, спасибо. Попробую этот вариант вечерком :)
---------- Post added at 06:10 ---------- Previous post was at 06:07 ----------
Да вот, все руки не доходят разобраться... :(
---------- Post added at 06:13 ---------- Previous post was at 06:10 ----------
Так у меня сперва стоит always @(nRESET or CLOCK) - т.е. чувствительность к любым перепадам клока, а потом в условии else if(CLOCK), т.е. когда клок находится в единице. Что же не так?
---------- Post added at 06:14 ---------- Previous post was at 06:13 ----------
Да он когда и есть, то намертво в единице - это 4 бит порта 7FFD. Но так как у меня используется сейчас только ПЗУ 48к, то этот бит несущественен.
Это не то, о чем я здесь писал?
http://zx.pk.ru/showpost.php?p=220962&postcount=306
В Верилоге можно пометить как комментарий кусок текста:
/*
................
*/
Есть ли аналогичное в VHDL или только построчно через "--"?
---------- Post added at 11:00 ---------- Previous post was at 10:36 ----------
Как сделать RAM_ADRESS <= ADDR_COUNTER, если
signal ADDR_COUNTER : unsigned (18 downto 0);
RAM_ADRESS : out std_logic_vector (18 downto 0);
ADDR_COUNTER - счетчик (ADDR_COUNTER <= ADDR_COUNTER + 1)
Только сейчас заметил разговор. Список чувствительности always без posedge/negedge по большому счету пишется для самоуспокоения, на синтез он не влияет и можно просто писать always @*.
В продолжение мысли — такой always не имеет никаких чувствительностей. Все чуствительности в выражениях, а то, что в скобочках always — это то, что может повлиять на состояние схемы внутри и по крайней мере квартусу это не более чем повод выдать предупреждение (странно, что он на переводы строк их не выдает). Но непосредственного влияния список чувствительности always не определяет.Цитата:
Так у меня сперва стоит always @(nRESET or CLOCK) - т.е. чувствительность к любым перепадам клока, а потом в условии else if(CLOCK), т.е. когда клок находится в единице. Что же не так?
в верилоге должен превратиться в такое:Код:process(nRESET,CLOCK)
begin
if( nRESET = '0' ) then DOS <= '0';
elsif (CLOCK'event and CLOCK = '1') and nM1 = '0' and nRD = '0' and nMREQ = '0' and (ADRESS(15 downto 8) = "00111101") and ROMSEL = '1' then DOS <= '1';
elsif (CLOCK'event and CLOCK = '1') and nM1 = '0' and nRD = '0' and nMREQ = '0' and (ADRESS(14) = '1' or ADRESS(15) = '1') then DOS <= '0';
end if;
end process;
В доказательство привожу две очень по-моему похожие друг на друга картинки. Мейкает сенс? Код на VHDL по большому счету изначально некорректно написан и, кстати, Квартус не очень-то рад такой записи.Код:always @(negedge nRESET or posedge CLOCK) begin: lolprocess
if (~nRESET)
DOS <= 1'b0;
else begin
if (~nM1 && ~nRD && ~nMREQ && ROMSEL && ADRESS[15:8] == 8'b00111101) DOS <= 1'b1;
if (~nM1 && ~nRD && ~nMREQ && |ADRESS[15:14]) DOS <= 1'b0;
end
end
Век живи - век учись... :)
Господа, существует стандартная (т.е. проверенная и рекомендованная) схема генерации сигнала сброса внутри самой ПЛИС после подачи на неё питания, чтоб не заводить внешний RESET?
Если есть возможность задавать начальное состояние регистров, можно сделать счетчик, что-нибудь типа:
Во FLEX-ах задавать начальное значение было нельзя, хотя может быть начальное нулевое состояние было гарантировано, не уверен. Во всех Циклонах уже можно.Код:module resetgen(input clk, input resetkey, output nRESET);
reg [7:0] resetctr = 0;
assign nRESET = &resetctr;
always @(posedge clk) begin
if (resetkey)
resetctr <= 0;
else if (~nRESET)
resetctr <= resetctr + 1'b1;
end
endmodule