|
Асинхронка в verilog |
|
|
|
Jul 2 2017, 16:43
|
Частый гость
 
Группа: Свой
Сообщений: 101
Регистрация: 24-02-14
Из: Москва
Пользователь №: 80 661

|
Всем привет! Написал FSM разделив синхронку и асинхронку; то есть в одном always блоке синхронный процесс, во втором в списке чувствительности занесены все входные сигналы; Vivado 16.3 и 17.1 развели написанное мной ядро так, что сигналы из списка чувствительности воспринимаются как не законстрэйнченые клоки... Вопрос - это нормално и можно на это забить? Или где-то в коде косяк и такого не должно быть? Что бы было понятнее про что я - я прикрепляю фотку (принсткрин сделать не могу сейчас, прошу прощения за качество)
|
|
|
|
|
 |
Ответов
|
Jul 3 2017, 12:55
|
Частый гость
 
Группа: Свой
Сообщений: 101
Регистрация: 24-02-14
Из: Москва
Пользователь №: 80 661

|
Цитата(masics @ Jul 3 2017, 12:26)  Скорее всего это latches. Вы праввы Я посчитал, что вот это Код always @(*) begin if (header_formatter_ready) header_formatter_ready_latch <= 1'b1; else if (ascii_header_dataout_rd_en || reset_header_config) header_formatter_ready_latch <= 1'b0; else header_formatter_ready_latch <= header_formatter_ready_latch; end синтезируется как LDCE Код LDCE #( .INIT(1'b0) // Initial value of latch (1'b0 or 1'b1) ) LDCE_inst ( .Q(header_formatter_ready_latch), // Data output .CLR(ascii_header_dataout_rd_en || reset_header_config), // Asynchronous clear/reset input .D(1'b1), // Data input .G(1'b1), // Gate input .GE(header_formatter_ready) // Gate enable input ); Мне было не очевидно, что на самом деле это не так Сейчас уже вижу, что приоритеты ресета в двух кусках разные
|
|
|
|
|
Jul 3 2017, 13:45
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Lutovid @ Jul 3 2017, 15:55)  Код always @(*) begin if (header_formatter_ready) header_formatter_ready_latch <= 1'b1; else if (ascii_header_dataout_rd_en || reset_header_config) header_formatter_ready_latch <= 1'b0; else header_formatter_ready_latch <= header_formatter_ready_latch; end синтезируется как LDCE Мне было не очевидно, что на самом деле это не так Сейчас уже вижу, что приоритеты ресета в двух кусках разные На самом деле в любом case, если не определить все состояния, появятся латчи. Чтобы этого не произошло, надо определить состояние по "умолчанию"...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jul 3 2017, 13:46
|
Частый гость
 
Группа: Свой
Сообщений: 101
Регистрация: 24-02-14
Из: Москва
Пользователь №: 80 661

|
Цитата(iosifk @ Jul 3 2017, 16:45)  На самом деле в любом case, если не определить все состояния, появятся латчи. Чтобы этого не произошло, надо определить состояние по "умолчанию"... В моем примере else разве не определяет состояния "по умолчанию"? Если речь идет об fsm, то там default поле, естественно, есть
|
|
|
|
|
Jul 3 2017, 13:59
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Lutovid @ Jul 3 2017, 16:46)  В моем примере else разве не определяет состояния "по умолчанию"? Если речь идет об fsm, то там default поле, естественно, есть Я не внимательно вчитался в Ваш код, наверное потому и не понял... Просто я так никогда не делаю: always @(*) begin if (header_formatter_ready) header_formatter_ready_latch.... Если у Вас есть автомат, то зачем вот это always @(*) ? У Вас что, какие-то сигналы могут меняться "между фронтами клоков"? В любом случае, должен быть автомат, который определяет, кому и когда что можно делать. И должны быть регистры, счетчики и все прочее, которые получают от автомата сигналы на разрешение записи, сдвига, обнуления и т.д.
--------------------
www.iosifk.narod.ru
|
|
|
|
Сообщений в этой теме
Lutovid Асинхронка в verilog Jul 2 2017, 16:43 Timmy Асинхронные сигналы в FSM использовать вообще нель... Jul 2 2017, 17:07 Lutovid Цитата(Timmy @ Jul 2 2017, 20:07) Асинхро... Jul 2 2017, 17:13 iosifk Цитата(Lutovid @ Jul 2 2017, 19:43) Напис... Jul 2 2017, 20:34 Lutovid Цитата(iosifk @ Jul 2 2017, 23:34) Неправ... Jul 3 2017, 01:22  Bad0512 Цитата(Lutovid @ Jul 3 2017, 08:22) Норма... Jul 3 2017, 01:59     Lutovid Цитата(iosifk @ Jul 3 2017, 16:59) Я не в... Jul 3 2017, 14:08      iosifk Цитата(Lutovid @ Jul 3 2017, 17:08) Прост... Jul 3 2017, 14:22 one_eight_seven Зачем вы мучаетесь сами и мучаете других подобным ... Jul 3 2017, 13:08 Lutovid Цитата(one_eight_seven @ Jul 3 2017, 16:0... Jul 3 2017, 13:41
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|