Перейти к содержанию
    

topor_topor

Свой
  • Постов

    535
  • Зарегистрирован

  • Посещение

Весь контент topor_topor


  1. Да. Все входные сигналы должны быть синхронны clk. Что касается "else state <= s0;" - пишите - это хороший стиль, особенно для начинающих. Кроме того, некоторые строгие синтакс чекеры ругаються на его отсутствие. 1) А чем Вам иголки помешали? Зачем их убирать, если схема синхронна? 2) Убирать иголки можно и правильной кодировкой состояний автомата Мура (напр: 000 -> 001 -> 011 -> 010 ....)
  2. ну если цифровое решение устроит.... И именно с потенциометром.... Тады так: 1) Потенциометр меняет напряжение на входе АЦП 2) Выход АЦП попадает в цифровую схему, как параметр определяющий смещение импульса 3) Цыфра формирует импульс заданной длительности 4) Задержку в цифре элементарно сделать на счётчике который стартует по переднему перепаду "широкого импульса" и останавливается как только "досчитает до значения с АЦП".
  3. Спорное утверждение.... Надо брать во внимание гармонику определяющую фронт. А какая крутизна фронта сигнала? Надо ли её коректно передать? Какое время есть на установление сигнала после фронта?
  4. 1) "при некоторой доработке автомата необходимо менять формирование этого СЕ, правильно?" - правильно. 2) "Да и достаточно точно знать все времянки функционала автомата." - правильно 3) "Так выглядит достаточно сложно." - всё относительно.... У Вас есть выбор: а) напихать Wait States в FSM, б) ускорить умножитель, с) шагать равномерно но медленнее (соотв. самому медленному комбинаторному пути) д) шагать неравномерно. 2) Пример FSM с СЕ (fsm_ce): reg [1:0] FSM_seq, FSM_next; wire fsm_ce; always @ (FSM_seq) begin case (FSM_seq) state0 : FSM_next <= state1; state1 : FSM_next <= BIG_state2; BIG_state2 : FSM_next <= state3; state3 : FSM_next <= state0; endcase end always @ (posedge clk) begin if (fsm_ce) FSM_seq <= FSM_next; else FSM_seq <= FSM_seq; end ... Пример как шагать медленнее CLK но равномерно: reg [2:0] ce_counter; always @ (posedge clk) ce_counter <= ce_counter + 1; // 1/4 максимальной скорости assign fsm_ce = ce_counter[2] & ce_counter[1] & ce_counter[0]; ... Шагаем со скоростью CLK, при этом BIG_state2=7*CLK: reg [3:0] ce_counter; always @ (posedge clk) begin if (ce_counter == 8) ce_counter <= 0; else ce_counter <= ce_counter + 1; end // BIG_state2 = 7xCLK assign fsm_ce = (ce_counter == 0 || ce_counter == 1 || ce_counter == 8 ) ? 1 : 0; P.S. Не симулил... Ресеты викинул для наглядности....
  5. Вас интересует точное решение задачи поставленной в начале или пример описания FSM которая "шагает не на каждом клоке", как я описал принцип?
  6. 1) Это собственно прямой ответ на прямой вопрос начинающего: "Можно ли с помощью счетчика не менять стадию автомата в течении 5 тактов и будет ли правильно работать при этом логика перемножителя?" Какой вопрос - такой и ответ.... 2) Копнём глубжее.... Допустим ну никак не получается комбинаторика короче одного такта (как и есть в начальной постановке задачи). И ну очень не хочется Wait state's пустышки в красивое описание FSM добавлять. И при этом надо создать "реально-професиональную" схему, а не тупо тренироваться.... Пожалуйста! притянем за уши моё предложение: - описываем FSM без Wait state's. - запускаем счётчик синхронно FSM для деления частоты и формирования нужных CE. - формируем глобальный FSM.CE но... не меандро-подобный а с розрывами где надо умножать. Так устроит?
  7. Quartus, насколько я помню, может отображать при симуляции не только пины но и внутренние сигналы, а именно - сщстояние\выходы тригеров. Состояние произвольных цепей не может.
  8. 1) Если между 2 тригерами стоит комбинаторика (умножитель напр.) которая требует более такта то надо использовать CE (Clock enable) входы тригеров, чтобы они переключались медленнее. Для этого собственно CE и придуманы. На CE можно подать сигнал с делителя частоты (счётчика). 2) Можно итак - увеличить число состояний автомата на время срабатывания комбинаторики (добавить Wait State's)
  9. Да хоть на 20-м: //---- // Гдето на самом топе.... `define INST1_P1 1 `define INST2_P1 2 //----- // Гдето на глубине 20... module_type1 inst_1 (); defparam inst_1.param1=`INST1_P1; // Гдето на глубине 120... module_type1 inst_2 (); defparam inst_2.param1=`INST2_P1; Не впорядке критики, а просто как способ....
  10. В Veriloge типа так: module module_type1 (); parameter param1; endmodule //----- module_type1 inst_1 (); defparam inst_1.param1=1; module_type1 inst_2 (); defparam inst_2.param1=2; ......
  11. Нормально вроде всё - везде один и тот-же In_Div заведён на FF.clk. чё Вам так переживать - чё FPGA съело, ASIC и подавна съест... Вот только зачем-то проект полностью структурным способом описан - почти везде прямая инстанцинация примитивов.... Если есть VHDL описание каждого примитива - никаких проблем. Если нет - прийдётся или инстанцировать прямо технологическую библиотеку примитивов или создавать VHDL описание... В первом случае - сэкономите на синтезе :). Вцелом - нафик нужный лишний геморой....
  12. Оба варианта правильны. Такие "кондюки" должны закорачивать входы чипа по ВЧ. Т.е. расстояние от пинов чипа до его обеих концов должно быть минимально, а не образовывать огромный контур (огромную L). Наличие переходных отверствий не принципиально (а-то чё с BGA делать...). "Вот мой случай: микросхемка xq4025e:" - даже лутше.
  13. Вы бы могли привести фрагмент кода для оценки его соответствия синхронному дизайну? Особенно, там где делёные частоты...
  14. "А тулзы есть у всех," - А Вы случайно не знаете, фаб будет проверять ID тулзы в Вашем GDS файлике с целью написать куда надо? А ADI вопрос лицензионности тулзы в которой DEF и Нетлист сделаны тоже неинтересны и в контракте ни слова про это не будет? Буржуи они такие....
  15. "Не хватает только ответа на мой вопрос: сколько работа будет стоить?" - к сожалению по столь общему описанию проекта трудно дать такой ответ.... Не ясно, нужно сделать хард IP (GDS2 или DEF) для Вашего синтезатора или и всё остальное то-же.... --------- Всё остальное может включать: - тест интерфейс совместимый с неуказанными требованиями ADI, тест контроллер для дебага и производственного тестирования аналога, EEPROM для тримирования аналога и.т.п..... - в 24-х пиновом корпусе никто отдельно не выделит 4 пина на JTAG. Не любой интерфейс можна прикрутить к ATPG тулзе (типа TetraMAX или Test Encounter)..... Я-бы такое сделал месяцев за 3-6... Это что касается front end (RTL) ---------- По back end (SP&R) - Технология не известна. Тут аналог определяет.... - timing constraints в формате SDC , как я понимаю нет... Ну будем надеятся что дизай чисто синхронный раз в FPGA влез.... - Надо либо тулзы предоставить (Cadence или Synopsys + библиотеки: LIB, LEF и всё для RC экстракта - CapTable, QRC...), или не на форумах спрашивать, а искать фирмы способные такие тулзы содержать за пару 1000_000 EUR год.... - SP&R под уже используемую технологию - это где-то 1-2 месяца. Под Вашу - + пара месяцев на отладку скриптов. ATPG под Ваш тест контроллер - 1-2 месяца. ---------- Т.е. 5 - 12 месяцев по 5000$ месяц это где-то 25-60к$ у нас.... При условии предоставления тулзов.... А если тулзы не Ваши - спрашивайте у тех кто их имеет.... Правда front end часть за Вами.... ------------- P.S. Люди, кто-нить знает в СНГ контору, которая имеет все тулзы для back end диджитал дизайна и умеет его делать?
  16. 1) "азве для синтезатора имеет значение синхронная схема или нет?" - не имеет значения, т.е. для синтезатора любая схема выглядит чисто синхронной (даже асинхронный RS на 2-х гейтах). 2) Чтобы асинхронная схема работала правильно, нужно соблюсти величины задержек в разных частях. Эти задержки имплементируються на этапе SP&R, т.е. после синтеза. Для этого в Cadence Encounter намного больше гибкости (больше опций).
  17. Позвольте уточнить пару моментов: 1) Я правильно понял, что Analog Devices полностью делает аналоговую часть? Если да - то под какую технологию? 1ГГц это гдето уже 90нм .... Соотв. нужни библиотеки поддерживающие продвинутый STA (cross talk, IR drop etc.). Это есть? 2) Розмер цифры в тригерах? Я так понимаю, около 3000? 3) Сколько пинов в корпусе? 4) Требования к тестовому оборудованию: какой тестовый интерфейс надо (JTAG?), на каком оборудовании тестируем (формат файлов для теста....) 5) Используются ли памяти FPGA? Если да, то есть ли готовые ASIC MEMORY IP для Вашей технологии? 6) Сколько есть времени? 7) Можете ли Вы предоставить лицензионные тулзы (Cadence SOC Encounter напр.)?
  18. С глитчами реализация более простая - но шумная. Без глитчей - более коректная но громоздкая, и в Вашем случае с поз\нег еджем даже я-бы сказал - навороченная как для студента.... вы уж уточните... Мои рекомендации дают гличи. По-жизни надо смотреть по смыслу: Если Ваш блок - часть большей синхронной цифры - гличи ОК. Ежели выход идёт в аналог или вовне - надо гличи убирать....
  19. Изза разности задержек на логических элементах, возникают гонки сигналов. Таким образом, изменение сигналов на входе комбинаторной логики вызывает "последовательность изменений выхода" перед установлением его значения соответственно таблице истинности. По времени эти переходные процессы примерно равны величине задержки в логическом элементе. Собственно ради этого синхронный дизайн и придуман - значение попадает в следующий тригер на следуэщем клоке, т.е когда переходные процесы закончаться. В частности, это значит, что выход комбинаторики всегда "шумит" переходными прцессами... т.е. не чистый (имеет GLITCH или SPIKE)!
  20. 1) С в) без проблем, там всё posedge м. Подаём CLK на двоичный счётчик N-битный. Собираем по ИЛИ его выходы (или инверсии), чтобы получилась картинка. 2) Аналогично 1), но только надо второй счётчик, срабатывающий по negedge CLK. Принцип понятен? 3) А а) и в) должны быть без гличей? Или гличи допустимы? 4) с VHDL думаю другие подскажут....
  21. Лично я на VHDL не помогу описать.... Но что значит: 1 такт; 1 такт; 1,5 такта; 1,5 такта хорошо-бы времянкой пояснить... Ато не совсем ясно что-же надо сделать...
  22. Вы форумы не перепутали случайно? тут не програмисты вроде, а железячники.... Мы не на С а на Verilog пишем..... Или что имелось в виду под "программно реализовать"?
  23. Немогли-бы Вы уточнить Ваше ТЗ? 1) "коунтер тактов считает низкий уровень сигнала." - может имелось ввиду счётчик срабатывает по падающему фронту CLK? Скольки битный этот счётчик? 2) "выходной сигнал, который может меняться (с низкого на высокий и наоборот) не только по низкому уровню CLK, но и по высокому" - т.е. надо чтобы выход менялся как по падающему так и по наростающему фронту? 3) "отсчитывать как целые такты, так и полу такты. пример выходного сигнала: 1 такт; 1 такт; 1,5 такта; 1,5 такта (затем циклическое повторение)" - что значит "отсчитывает такты..."? Тут как-то больше не на "счёт количества тактов", а на хитрое деление входной частоты похоже... Если это деление частоты, при котором и падающий и наростающий фронты спользуються, то надо и ставить 2 делителя - с падающим и наростающим тактовым входами, а выходной сигнал получить на ИЛИ....
×
×
  • Создать...