Важная информация

User Tag List

Страница 32 из 191 ПерваяПервая ... 282930313233343536 ... ПоследняяПоследняя
Показано с 311 по 320 из 1901

Тема: ПЛИС и всё что с ними связано

  1. #311
    Veteran Аватар для AlexBel
    Регистрация
    02.01.2007
    Адрес
    Волгоград, Россия
    Сообщений
    1,324
    Спасибо Благодарностей отдано 
    156
    Спасибо Благодарностей получено 
    126
    Поблагодарили
    76 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от heroy Посмотреть сообщение
    Если дословно перевести VHDL то будет так
    Код:
    always @ (RESET or posedege CLK)..............
    Да, согласен, спасибо. Попробую этот вариант вечерком

    ---------- Post added at 06:10 ---------- Previous post was at 06:07 ----------

    Цитата Сообщение от tnt23 Посмотреть сообщение
    А симулятором квартусовским ты не пользуешься? Клевая штука.
    Да вот, все руки не доходят разобраться...

    ---------- Post added at 06:13 ---------- Previous post was at 06:10 ----------

    Цитата Сообщение от heroy Посмотреть сообщение
    на не синхронной логике это в этом контексте коряво, а при синхронной (в always posedge CLOCK) не корректно, так как CLOCK может быть как 0 так и 1
    Так у меня сперва стоит always @(nRESET or CLOCK) - т.е. чувствительность к любым перепадам клока, а потом в условии else if(CLOCK), т.е. когда клок находится в единице. Что же не так?

    ---------- Post added at 06:14 ---------- Previous post was at 06:13 ----------

    Цитата Сообщение от tnt23 Посмотреть сообщение
    А кстати да, куда делся ROMSEL? в VHDL он есть, в Verilog'овском коде его уже нет.
    Да он когда и есть, то намертво в единице - это 4 бит порта 7FFD. Но так как у меня используется сейчас только ПЗУ 48к, то этот бит несущественен.

  2. #312
    ZEK
    Гость

    По умолчанию

    Цитата Сообщение от AlexBel Посмотреть сообщение
    if(CLOCK), т.е. когда клок находится в единице. Что же не так?
    если ты в always пишеш posedge CLOCK, блок always в момент изменения сигнала CLOCK из 0 в 1, так что я бы не завязывался что CLOCK будет именно 1

  3. #313
    Veteran Аватар для AlexBel
    Регистрация
    02.01.2007
    Адрес
    Волгоград, Россия
    Сообщений
    1,324
    Спасибо Благодарностей отдано 
    156
    Спасибо Благодарностей получено 
    126
    Поблагодарили
    76 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от heroy Посмотреть сообщение
    если ты в always пишеш posedge CLOCK, блок always в момент изменения сигнала CLOCK из 0 в 1, так что я бы не завязывался что CLOCK будет именно 1
    Это не то, о чем я здесь писал?
    http://zx.pk.ru/showpost.php?p=220962&postcount=306

  4. #314
    ZEK
    Гость

    По умолчанию

    Цитата Сообщение от AlexBel Посмотреть сообщение
    Это не то, о чем я здесь писал?
    Возможно что при событии сигнал всегда в 0, но опять же не завязывался бы, вроде как это нигде не описано а значит в любой момент может измениться

  5. #315
    Veteran Аватар для AlexBel
    Регистрация
    02.01.2007
    Адрес
    Волгоград, Россия
    Сообщений
    1,324
    Спасибо Благодарностей отдано 
    156
    Спасибо Благодарностей получено 
    126
    Поблагодарили
    76 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В Верилоге можно пометить как комментарий кусок текста:
    /*
    ................
    */

    Есть ли аналогичное в 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)

  6. #316
    Tim0xA
    Гость

    По умолчанию

    Цитата Сообщение от AlexBel Посмотреть сообщение
    Есть ли аналогичное в VHDL или только построчно через "--"?
    Насколько я знаю, в VHDL этого нет, но зато в квартусе есть возможность выделить блок и в контекстном меню выбрать "Comment Selection" или "Uncomment Selection".

  7. #316
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #317
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,115
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    655
    Поблагодарили
    402 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Только сейчас заметил разговор. Список чувствительности always без posedge/negedge по большому счету пишется для самоуспокоения, на синтез он не влияет и можно просто писать always @*.

    Так у меня сперва стоит always @(nRESET or CLOCK) - т.е. чувствительность к любым перепадам клока, а потом в условии else if(CLOCK), т.е. когда клок находится в единице. Что же не так?
    В продолжение мысли — такой always не имеет никаких чувствительностей. Все чуствительности в выражениях, а то, что в скобочках always — это то, что может повлиять на состояние схемы внутри и по крайней мере квартусу это не более чем повод выдать предупреждение (странно, что он на переводы строк их не выдает). Но непосредственного влияния список чувствительности always не определяет.

    Код:
    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 @(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
    В доказательство привожу две очень по-моему похожие друг на друга картинки. Мейкает сенс? Код на VHDL по большому счету изначально некорректно написан и, кстати, Квартус не очень-то рад такой записи.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	latchtest_verilogtest.jpg 
Просмотров:	437 
Размер:	21.1 Кб 
ID:	13428   Нажмите на изображение для увеличения. 

Название:	latchtevt_vhdltest.jpg 
Просмотров:	377 
Размер:	20.0 Кб 
ID:	13429  
    Больше игр нет

  9. #318
    Veteran Аватар для AlexBel
    Регистрация
    02.01.2007
    Адрес
    Волгоград, Россия
    Сообщений
    1,324
    Спасибо Благодарностей отдано 
    156
    Спасибо Благодарностей получено 
    126
    Поблагодарили
    76 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Век живи - век учись...

  10. #319
    Banned Аватар для Black_Cat
    Регистрация
    15.06.2006
    Адрес
    S.Pb
    Сообщений
    5,791
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Господа, существует стандартная (т.е. проверенная и рекомендованная) схема генерации сигнала сброса внутри самой ПЛИС после подачи на неё питания, чтоб не заводить внешний RESET?
    Последний раз редактировалось Black_Cat; 04.10.2009 в 05:56.

  11. #320
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,115
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    655
    Поблагодарили
    402 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если есть возможность задавать начальное состояние регистров, можно сделать счетчик, что-нибудь типа:
    Код:
    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
    Во FLEX-ах задавать начальное значение было нельзя, хотя может быть начальное нулевое состояние было гарантировано, не уверен. Во всех Циклонах уже можно.
    Больше игр нет

Страница 32 из 191 ПерваяПервая ... 282930313233343536 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ДВК (и всё, что с ними связано)
    от Grand в разделе ДВК, УКНЦ
    Ответов: 4534
    Последнее: 04.04.2024, 23:32
  2. Ответов: 1187
    Последнее: 22.12.2023, 20:53
  3. PAL/GAL и все что с ними связано.
    от Mick в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 487
    Последнее: 01.12.2023, 00:30
  4. SMUC на дискретах и ПЛИС
    от spensor в разделе Scorpion
    Ответов: 844
    Последнее: 15.05.2023, 12:31
  5. Вопрос по ПЛИС
    от Zloy в разделе Несортированное железо
    Ответов: 23
    Последнее: 17.10.2015, 17:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •