Forth http://fforum.winglion.ru/ |
|
4 битный процессор http://fforum.winglion.ru/viewtopic.php?f=3&t=150 |
Страница 3 из 5 |
Автор: | WingLion [ Чт авг 31, 2006 00:38 ] |
Заголовок сообщения: | |
oleg писал(а): согласно выше приведенной блок схеме.
Попытался я сие на квартусе развести, он и вправду показывает порядкя 10 нс задержки... но это ОТ ВХОДОВ!. Внутри проекта, когда входы от внутренних ресурсов, задержки меньше должны быть. Кстати, проще написать Код: eqzero = (reg[] == 0);
И синхронизацию на регистр лучше прямо clk подавать, а не генерировать импульсы из сигналов выбора... от такого глюки полезут натуральные из-за гонок сигналов - кто быстрее, синхра сработает или выборка произойдет. |
Автор: | Hishnik [ Чт авг 31, 2006 00:46 ] |
Заголовок сообщения: | |
oleg писал(а): if reg[].q == 0 Then eqzero = Vcc;
ElsIf reg[].q != 0 Then eqzero = Gnd; End if; Ой, а так зачем? Vcc и Gnd - это именно силовые линии питания, трудно сказать, что синтезатор надумает, глядя на такую запись. Имелось в виду 1 и 0? |
Автор: | WingLion [ Чт авг 31, 2006 00:58 ] |
Заголовок сообщения: | |
У Альтеры присваивание: signal=1; приводит к ошибке числа присваивать можно только шинам, а не одиночным сигналам... |
Автор: | Hishnik [ Чт авг 31, 2006 01:06 ] |
Заголовок сообщения: | |
В VHDL можно присвоить шине 1 (если она integer), а для сигнала надо взять его в одинарные кавычки - '1'. Может, и в AHDL такие варианты есть? А то лезть на питание как-то страшно. |
Автор: | mOleg [ Чт авг 31, 2006 03:09 ] |
Заголовок сообщения: | |
Хищник писал(а): Ой, а так зачем? Vcc и Gnd - это именно силовые линии питания, трудно сказать, что синтезатор надумает, глядя на такую запись. Имелось в виду 1 и 0? вообще это не я придумал. В доке написано, если хотите присвоить какое-то константное значение сигналу, то подсоединяете их к одной из шин vcc иди gnd. WingLion писал(а): Попытался я сие на квартусе развести, он и вправду показывает порядкя 10 нс задержки... но это ОТ ВХОДОВ!. Внутри проекта, когда входы от внутренних ресурсов, задержки меньше должны быть. а как это проверить? у меня получаются задержки от 22 до 24 нс (время прохождения сигнала от входа до выхода регистра.) Кстати, можно как-нибудь заставить группу блоков располагаться в одном столбце? а не раскидывать по всей микрухе равномерно??? То есть я хочу, чтобы регистр занимал весь столбец и не лез на следующий. WingLion писал(а): Кстати, проще написать Код: eqzero = (reg[] == 0); я в начале вообще описывал компаратор через логику Просто потом надоело. Замечание учту WingLion писал(а): И синхронизацию на регистр лучше прямо clk подавать, а не генерировать импульсы из сигналов выбора... от такого глюки полезут натуральные из-за гонок сигналов - кто быстрее, синхра сработает или выборка произойдет.
а я вот на это дело посмотрел, и хочу наоборот отказаться от clk. То есть просто фиксировать значение по приходу сигнала выбора одного из путей. Просто для этого нужно знать, как будет работать дешифратор команд ( а к нему я еще не подошел, делаю все остальное). |
Автор: | WingLion [ Чт авг 31, 2006 06:04 ] |
Заголовок сообщения: | |
oleg писал(а): а как это проверить? у меня получаются задержки от 22 до 24 нс (время прохождения сигнала от входа до выхода регистра.) Я для проверки таких вещей ставил на всех входах тригеры и пускал сигналы через них. MAX-Plus считал предельную частотту для clk ее период и есть максимальное время задержки между внутренними ресурсами (в зависимости от того, как разводка ляжет, разумеется). В квартусе, по идее, такой финт тоже должен работать, но я просто не пробовал. oleg писал(а): а я вот на это дело посмотрел, и хочу наоборот отказаться от clk. То есть просто фиксировать значение по приходу сигнала выбора одного из путей. Не знаю, что из этого выйдет, просто, есть у Альтеры еще одно ограничение при разводке - на каждый LAB - ограниченное количество входов синхронизации. Если синхру для тригеров генерить внутри, то этот параметр быстро вылезет за предел и начнутся натуральные трахи. Я с таким уже сталкивался, в том числе, когда на 10К10 проект делал. Мучался с этим делом очень долго, а Макс-плюс еще и ошибку эту совершенно нерегулярно находил. Квартус, с его "простотой", боюсь, будет просто вопить "no fit" без объяснения причин. Хотя, не буду утверждать, что к этому придет. Просто, такое возможно, если плодить лишние клоки (и асинхронные сбросы установки, тоже). oleg писал(а): Кстати, можно как-нибудь заставить группу блоков располагаться в одном столбце? а не раскидывать по всей микрухе равномерно??? То есть я хочу, чтобы регистр занимал весь столбец и не лез на следующий.
В MAX-Plus-е для такого есть "assign Clique" - назначить группе элементов один и тот же Clique, и разводчик старается расположить эту группу компактно в ПЛИС-е. Я такими назначениями добивался приличных увеличений тактовой частоты для проектов. Вот только гадать приходилось, какие блоки располагать "вместе". А назначение одного Clique сразу всем - не всегда помогает. Если рядом не располагается, разводчик все равно схему раскидает по всей ПЛИС-ине. Есть ли это делов в Квартусе - еще не знаю. В последних МАX-плюсах, где была опция "квартус" для разводчика, все время варнинг выскакивал, что clique квартусовским разводчиком не поддерживается И из-за этого получалась "квартусу" прямая антиреклама... |
Автор: | WingLion [ Чт авг 31, 2006 07:13 ] |
Заголовок сообщения: | |
Хищник писал(а): Может, и в AHDL такие варианты есть? А то лезть на питание как-то страшно.
В AHDL VCC и GND просто синонимы лог.1 и лог.0 и нет ничего "страшного" |
Автор: | Hishnik [ Чт авг 31, 2006 22:34 ] |
Заголовок сообщения: | |
WingLion писал(а): В AHDL VCC и GND просто синонимы лог.1 и лог.0 и нет ничего "страшного" Smile
Это хорошо. Старые Xilinx Foundation вроде бы не очень любили gnd и vcc. Правда, на схемах не любили. Вобщем, я и привык задавать константы в видк '0', '1'. |
Автор: | Hishnik [ Чт авг 31, 2006 22:37 ] |
Заголовок сообщения: | |
oleg писал(а): а я вот на это дело посмотрел, и хочу наоборот отказаться от clk. То есть просто фиксировать значение по приходу сигнала выбора одного из путей. Просто для этого нужно знать, как будет работать дешифратор команд ( а к нему я еще не подошел, делаю все остальное).
Лучше так не делать. Причем чем современнее ПЛИС, тем лучше Будут гонки фронтов, более того, от одной трансляции к другой они будут разные (поскольку сформированные логикой тактовые сигналы будут каждый раз раскидываться разными путями). Вобщем, очень и очень рекомендуется так не делать. |
Автор: | mOleg [ Пт сен 01, 2006 00:33 ] |
Заголовок сообщения: | |
Хищник писал(а): Лучше так не делать. Причем чем современнее ПЛИС, тем лучше Будут гонки фронтов, более того, от одной трансляции к другой они будут разные (поскольку сформированные логикой тактовые сигналы будут каждый раз раскидываться разными путями). Вобщем, очень и очень рекомендуется так не делать.
Но что делать, очень хоцца Я ведь не собираюсь вообще устранять тактовую - это не реально, просто немного иной подхо в ее прохождении от одного устройства к другому. То есть тактовые импульсы на устройство подавать только в случае, если предполагается его срабатывание. Вот |
Автор: | Hishnik [ Пт сен 01, 2006 00:40 ] |
Заголовок сообщения: | |
oleg писал(а): Но что делать, очень хоцца Cool
Я ведь не собираюсь вообще устранять тактовую - это не реально, просто немного иной подхо в ее прохождении от одного устройства к другому. То есть тактовые импульсы на устройство подавать только в случае, если предполагается его срабатывание. Вот Плохой подход, настоятельно рекомендуемый к устранению. Для запрета срабатывания триггера есть штатный сигнал CE (Clock Enable), надо управлять им. А резать тактовую частоту означает ловить глюки. |
Автор: | WingLion [ Пт сен 01, 2006 06:17 ] |
Заголовок сообщения: | |
и не только ловить, но и плодить! P.S. Хотя, конечно, каждый вправе наступать на собственноручно выстроганные грабли. |
Автор: | mOleg [ Пт сен 01, 2006 07:07 ] |
Заголовок сообщения: | |
WingLion писал(а): и не только ловить, но и плодить!
P.S. Хотя, конечно, каждый вправе наступать на собственноручно выстроганные грабли. Ладно, подойдем с другой стороны ( то есть с хвоста ) на сколько симулятор maxII адекватно симулирует??? |
Автор: | WingLion [ Пт сен 01, 2006 07:16 ] |
Заголовок сообщения: | |
oleg писал(а): Ладно, подойдем с другой стороны ( то есть с хвоста ) Cool
на сколько симулятор maxII адекватно симулирует??? Лично я не замечал, чтобы в железке не заработало что-то, что в симуляторе работало как надо. Просто не всегда в симуляторе удается проверить все-все-все. Когда период выходного сигнала 1000000 тактов, симулятору просто места на винте не хватает для отгрузки и комп захлебывается... |
Автор: | mOleg [ Пт сен 01, 2006 07:35 ] |
Заголовок сообщения: | |
WingLion писал(а): oleg писал(а):
Ладно, подойдем с другой стороны ( то есть с хвоста ) Cool на сколько симулятор maxII адекватно симулирует??? Лично я не замечал, чтобы в железке не заработало что-то, что в симуляторе работало как надо. Просто не всегда в симуляторе удается проверить все-все-все. Ясно, спасибо. Значит по симуляциям и будем ориентироваться |
Страница 3 из 5 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |