aprox 0 27 мая, 2010 Опубликовано 27 мая, 2010 · Жалоба Просто логически неправильно подавать один и тот же сигнал rx_locked и на тактовый вход триггера, и на вход данных. В AHDL "такую глупость" тоже никто не мешает сделать :) Такая глупость маловерятна потому, что пишущий на AHDL уже имеет в голове образ D-триггера, который надо конкретно обыграть примитивами dff, dffe, tff, srff. А в представленном фрагменте на Verilog никакой внутренней аржитектуры FPGA разглядеть неозможно. Отсюда и простор для глупостей, типа работу триггера писать вручную и, естественно, ошибиться и "описаться" лишний раз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 28 мая, 2010 Опубликовано 28 мая, 2010 (изменено) · Жалоба Такая глупость маловерятна потому, что пишущий на AHDL уже имеет в голове образ D-триггера, который надо конкретно обыграть примитивами dff, dffe, tff, srff. А в представленном фрагменте на Verilog никакой внутренней аржитектуры FPGA разглядеть неозможно. Отсюда и простор для глупостей, типа работу триггера писать вручную и, естественно, ошибиться и "описаться" лишний раз. :bb-offtopic: Я вот такую глупость даже на схематике реализовать могу, уже имея изображение D-триггера Изменено 28 мая, 2010 пользователем bogaev_roman Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aprox 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Я вот такую глупость даже на схематике реализовать могу, уже имея изображение D-триггера Охотно верю. Hо это будет осознанная с вашей стороны глупость. А у программиста, про которого вы писали мол "описался", глупость была естественной. Языки VHDL/Verilog созданы для чистых программистов, которые ничерта не понимают в схемотехнике. Отсюда и все глупости. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Вынужден признать, что слова Aprox имеют под собой основание. Самого несколько напрягает подобного вида запись always @(posedge rx_outclock or negedge rst_) из которой не очевидно, что один вход работает по фронту, а другой по уровню. А написать так always @(posedge rx_outclock or rst_) увы, нельзя! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба always @(posedge rx_outclock or negedge rst_) Может Вам будет легче воспринимать этот блок таким образом: Запускать каждый раз при выполнении следующих условий: положительного перепада rx_outclock или отрицательного перепада rst_ если rst_ равняется 0 (а он после отрицательного перепада равняется) делать ... иначе (то есть rst_ не равен нулю, значит мы попали сюда из-за второго условия - положительного перепада клока) делать ... Хотя по мне, так понять и запомнить синтаксис любого HDL языка и сопоставить его тому, что в итоге получится "в железе" - дело пары недель. А, если это не до конца понятно, наверное, стоит еще пописать простые примеры и понять, как работает синтезатор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mahagam 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Такая глупость маловерятна потому, что пишущий на AHDL уже имеет в голове образ D-триггера, который надо конкретно обыграть примитивами dff, dffe, tff, srff. А в представленном фрагменте на Verilog никакой внутренней аржитектуры FPGA разглядеть неозможно. Отсюда и простор для глупостей, типа работу триггера писать вручную и, естественно, ошибиться и "описаться" лишний раз. бред. // FDRSE: Single Data Rate D Flip-Flop with Synchronous Clear, Set and // Clock Enable (posedge clk). // Spartan-3 // Xilinx HDL Language Template, version 11.4 FDRSE #( .INIT(1'b0) // Initial value of register (1'b0 or 1'b1) ) FDRSE_inst ( .Q(Q), // Data output .C©, // Clock input .CE(CE), // Clock enable input .D(D), // Data input .R®, // Synchronous reset input .S(S) // Synchronous set input ); вот вам Verilog, с которым не ошибёшся. такое же идиотское описание каждого триггера. а что делать когда нужно быстренько описать две сотни триггеров? вспоминать как описать каждый? как dff, dffe, tff, srff? описывалка не опухнет? Языки VHDL/Verilog созданы для чистых программистов, которые ничерта не понимают в схемотехнике. Отсюда и все глупости. это вот самая большая глупость. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Вынужден признать, что слова Aprox имеют под собой основание. Самого несколько напрягает подобного вида запись always @(posedge rx_outclock or negedge rst_) из которой не очевидно, что один вход работает по фронту, а другой по уровню. А написать так always @(posedge rx_outclock or rst_) увы, нельзя! Абсолютно никакого основания always @(posedge rx_outclock or negedge rst_) - Д-Триггер, работающий по фронту с асинхронным сбросом по срезу always @(posedge clk) if (~rst) - Д-триггер, работающий по фронту с синхронным сбросом. Какой триггер Вы хотите реализовать записью always @(posedge rx_outclock or rst_) мне не понятно. Языки VHDL/Verilog созданы для чистых программистов Может с этим кто-то и согласится, но мое мнение такого: Verilog, VHDL - это не языки программирования, а языки описания аппаратуры и сравнивать его с СИ++ например может только человек, незнакомый с ними или знающий поверхностно. Я на том же верилоге могу все хоть повентильно описать, используя примитивы. Другое дело, что в нем заложено некое "дополнение", есть нечто от СИ++ для удобства и если ентим кто-то пользуется неумело - то это его проблемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Putnik 0 28 мая, 2010 Опубликовано 28 мая, 2010 (изменено) · Жалоба always @(posedge rx_outclock or negedge rst_) - Д-Триггер, работающий по фронту с асинхронным сбросом по срезу у триггеров не бывает несколько тактовых сигналов, то есть можно работать по срезу только тактового сигнала, другое дело, как сказал des333, быстро привыкаешь к такому описанию, так что запись always @(posedge rx_outclock or rst_) была бы конечно понятней Изменено 28 мая, 2010 пользователем Putnik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Абсолютно никакого основания always @(posedge rx_outclock or negedge rst_) - Д-Триггер, работающий по фронту с асинхронным сбросом по срезу Хотите, я после этого заголовка напишу такое, что rst_ заведется на тактовый вход, а rx_outclock на сброс? Может Вам будет легче воспринимать этот блок таким образом: А, если это не до конца понятно, наверное, стоит еще пописать простые примеры и понять, как работает синтезатор. Обидеть меня хотите:)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x736C 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Чтоб не плодить дополнительные темы, заодно тут сразу спрошу. Привык пользоваться триггером с синхронным сбросом. После синтеза занимает больше ресурсов, нежели применение асинхронного сброса. Как предпочтительнее? О существовании CummingsSNUG2002SJ_Resets.pdf знаю, но пока не осилил. Синхронный сброс позволяет добавить по его условию дополнительную логику. Например, сброс-установку счетчика. Может быть, с т.з. HDL это ошибочный подход? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Обидеть меня хотите :) ? Нет, что Вы. :) Просто написал вариант объяснения конструкции always, который оправдывает спорное использование слова posedge для сигнала сброса. А фраза: Хотя по мне, так понять и запомнить синтаксис любого HDL языка и сопоставить его тому, что в итоге получится "в железе" - дело пары недель. А, если это не до конца понятно, наверное, стоит еще пописать простые примеры и понять, как работает синтезатор. Это уже не Вам, а тем, кто действительно не понимает конструкций HDL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба 2 bogaev_roman module Locker2 (input clk, rst, in, output out); always @(posedge clk, negedge rst) if (clk) out = 0; else out = in; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aprox 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Чтоб не плодить дополнительные темы, заодно тут сразу спрошу. Привык пользоваться триггером с синхронным сбросом. После синтеза занимает больше ресурсов, нежели применение асинхронного сброса. Странно. Наверное пишете на Verilog? В AHDL количество использованных лог.элементов получается одинаковым, что при синхронном сбросе триггера, что при асинхронном. Причем в AHDL результат синтеза, какой же все-таки сброс получится, всегда стопроцентно предсказуем. Hе то, что в Verilog. Синхронный сброс позволяет добавить по его условию дополнительную логику. Например, сброс-установку счетчика. Может быть, с т.з. HDL это ошибочный подход? Все операции делать синхронно- это самый правильный подход с точки зрения надежной схемотехники. Асинхронность же чревата многими неприятностями. Например, асинхронный сброс счетчика чреват "проглатыванием" тактов. Очень не рекомендую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Putnik 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба Странно. Наверное пишете на Verilog? В AHDL количество использованных лог.элементов получается одинаковым, что при синхронном сбросе триггера, что при асинхронном. Причем в AHDL результат синтеза, какой же все-таки сброс получится, всегда стопроцентно предсказуем. Hе то, что в Verilog. В верилоге синхронный и асинхронный сброс очень сложно перепутать, разговор совсем о другом.. Пока что Вы везде предлагаете описание с помощью примитивов, покажите, пожалуйста, конструкцию которой Вы описываете синхронный/асинхронный сброс в AHDL. Это как-то хоть в тему будет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aprox 0 28 мая, 2010 Опубликовано 28 мая, 2010 · Жалоба вот вам Verilog, с которым не ошибёшся. такое же идиотское описание каждого триггера. а что делать когда нужно быстренько описать две сотни триггеров? вспоминать как описать каждый? как dff, dffe, tff, srff? описывалка не опухнет? Проблемы с двумя сотней триггеров в AHDL не понял. Сформулируйте понятнее и я вам тут же выдам простейший вариант. А в целом очень характерно, что отстаивают преимущества VHDL/Verilog большей частию разработчики на Xilinx. Им просто больше некуда деваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться