|
Как обеспечить стабильность?, CycloneII |
|
|
|
Dec 23 2009, 10:47
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(bark @ Dec 23 2009, 12:55)  ... написано всё на Verilog.. 1. Если есть FSM-мы, то не забывайте их возвращать в исходное состояние по default, типа: default: FSMa<=0 2. Все флаги переходов, перед анализом в FSM, надо фиксировать на триггерах. 3. Если есть ожидания, то надо их ограничивать по времени и принудительно прерывать, т.е.выходить из висячих состояний.
Сообщение отредактировал Serhiy_UA - Dec 23 2009, 11:13
|
|
|
|
|
Dec 23 2009, 10:59
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(bark @ Dec 23 2009, 04:46)  От себя вопросы. 1. ИМХО неправильно, я бы использовал синхронизатор сброса 2. Да, если вы четко понимаете что будет синтезировано в итоге. В противном случае лучше так не делать. Разница между casex casez есть в стандарте на verilog-2001. 3. метастабильность в альтерах4. сигнал тап
--------------------
|
|
|
|
|
Dec 23 2009, 11:44
|

Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 16-11-09
Из: Украина Юг
Пользователь №: 53 659

|
Цитата(des00 @ Dec 23 2009, 12:59)  1. ИМХО неправильно, я бы использовал синхронизатор сброса 2. Да, если вы четко понимаете что будет синтезировано в итоге. В противном случае лучше так не делать. Разница между casex casez есть в стандарте на verilog-2001. 3. метастабильность в альтерах4. сигнал тап1. можно подробней? 2. Понимаю довольно четко.. и вобщем-то система пашет.. но всё равно давно была идея избавиться от этих структур, наверно этим и займусь. 3.4. спасибо. в изучении. Цитата(Serhiy_UA @ Dec 23 2009, 12:47)  1. Если есть FSM-мы, то не забывайте их возвращать в исходное состояние по default, типа: default: FSMa<=0
2. Все флаги переходов, перед анализом в FSM, надо фиксировать на триггерах.
3. Если есть ожидания, то надо их ограничивать по времени и принудительно прерывать, т.е.выходить из висячих состояний. с этим вроде всё нормально. повторюсь.. система может корректно перелапатить миллионы операций. под операцией понимаю одно полное вычисление амплитуды коррелятором. а это в моём случае порядка 50 знаковых умножений, сложений, возведений в квадрат и округлений. операнды до 8-24 бит. с конвеерной подачей данных из памяти. всего пока использую до 12Кбит. причем чать операндов в памяти, а часть в регистрах.
Сообщение отредактировал bark - Dec 23 2009, 11:45
--------------------
Работаю 20ns в сутки.
|
|
|
|
|
Dec 23 2009, 12:29
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(bark @ Dec 23 2009, 14:46)  ...у меня основной блок сделан примерно так:
always @ (posedge clk, negedge resetn) begin 1. а почему не так: always @ (posedge clk or negedge resetn) begin 2. Нужно придумать способ найти место зависания FSM. Ведь после сброса проблема исчезает, значит где-то FSM висит. Советую вывести на какой-то вывод сигнал, частота которого определялась бы текущим местом в блок-схеме FSM. 3. В приложении статья по FSM.
|
|
|
|
|
Dec 23 2009, 14:45
|

Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 16-11-09
Из: Украина Юг
Пользователь №: 53 659

|
Цитата(Kuzmi4 @ Dec 23 2009, 16:02)  2 bark я так понимаю des00 предлогает вам использовать синхронный сброс. т.е. убрать (negedge resrtn) и else после блока сброса? т.е. просто оставить условие по выходу в состояние сброса всех флагов и значений?
--------------------
Работаю 20ns в сутки.
|
|
|
|
|
Dec 23 2009, 16:26
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Цитата(Kuzmi4 @ Dec 23 2009, 17:02)  2 bark я так понимаю des00 предлогает вам использовать синхронный сброс. Нет, не так. С асинхронным сбросом возможны проблемы при снятии сбросового сигнала. К примеру, если момент снятия сброса примерно приходится на момент фронта тактового сигнала, то некоторые триггеры могут успеть защелкнуть состояние входа после сброса, а некоторые - нет. Поэтому надо синхронизировать входной сигнал сброса с тактовыми сигналом (причем для каждого клокового домена), но использовать этот синхронизированный сигнал как асинхронный сброс. К примеру, сделать как на картинке:  Здесь выход reg4 используется как асинхронный сброс для всей остальной системы.
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Dec 23 2009, 16:58
|
Знающий
   
Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741

|
Цитата(Stewart Little @ Dec 23 2009, 19:26)  Нет, не так. С асинхронным сбросом возможны проблемы при снятии сбросового сигнала. К примеру, если момент снятия сброса примерно приходится на момент фронта тактового сигнала, то некоторые триггеры могут успеть защелкнуть состояние входа после сброса, а некоторые - нет. Поэтому надо синхронизировать входной сигнал сброса с тактовыми сигналом (причем для каждого клокового домена), но использовать этот синхронизированный сигнал как асинхронный сброс. К примеру, сделать как на картинке:  Здесь выход reg4 используется как асинхронный сброс для всей остальной системы. А что, тактовая через PLL не пропущена? Сбрасываете тем же асинхронным сбросом PLL, пока у неё на выходе тактовая появится, все триггеры будут в нужном состоянии 100%, никакие синхронизаторы не нужны.
|
|
|
|
|
Dec 23 2009, 19:53
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
По поводу резета - почитайте "Synchronous Resets? Asynchronous Resets? I am so confused! How will I ever know which to use?" Clifford E. Cummings, Don Mills Sunburst Design, Inc. LCDM Engineering SNUG San Jose 2002 Rev 1.1 Если коротко, то вводится в состояние сброса - асинхронно, а снимается сброс синхронно. Вообщем почитайте этих дядек... http://www.sunburst-design.com/http://www.lcdm-eng.com/Кстати, там они еще про SV вразумляют - может кому надо... Я - пас (другая религия) :-)
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|