Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

vhdl, точнее, логические проблемы

22 views
Skip to first unread message

Nickita A Startcev

unread,
Nov 27, 2007, 10:13:48 AM11/27/07
to
Привет, All !

Делаю 'real time clock' для восьмибитной системы.

Есть процесс, который по внешним клокам инкрементирует счетчик.

Есть процесс, который по внешнему сигналу чтения читает (в том числе и) этот
счетчик.

(пока всё ок).

Добавляю процесс, который по внешнему сигналу записи пишет в счетчик, получаю
конфликт.

Как бы его так логически разрулить?
Двупортовую память ставить? Маразмовато выходит.
Есть другие методы?

. С уважением, Hикита.
... С сегодняшнего дня этот вопpос y нас - наболевший.

Ilia Tarasov

unread,
Nov 27, 2007, 2:24:51 PM11/27/07
to
Tue Nov 27 2007 18:13, Nickita A Startcev wrote to All:

NAS> Привет, All !

NAS> Делаю 'real time clock' для восьмибитной системы.

NAS> Есть процесс, который по внешним клокам инкрементирует счетчик.

NAS> Есть процесс, который по внешнему сигналу чтения читает (в том числе и)
NAS> этот счетчик.

NAS> (пока всё ок).

NAS> Добавляю процесс, который по внешнему сигналу записи пишет в счетчик,
NAS> получаю конфликт.

NAS> Как бы его так логически разрулить?
NAS> Двупортовую память ставить? Маразмовато выходит.
NAS> Есть другие методы?

Hаписать все в одном процессе, причем приоритет должен быть у того, кто пишет
в счетчик. А сейчас получается, что регистр счетчика должен одновременно
принимать значения и счетчик+1 и "загружаемое значение". Двупортовая память не
спасет, она только разделит счетчик на две альтернативные ветки.

if rising_edge(clk)
if load = '1 then counter <= load_value;
elsif (тут проверка на достижение конца и инкремент)

bye

Nickita A Startcev

unread,
Nov 28, 2007, 7:16:22 AM11/28/07
to
Привет, Ilia !


27 Nov 07 , 22:24 Ilia Tarasov писал к Nickita A Startcev:

IT> Hаписать все в одном процессе, причем приоритет должен быть у того,
IT> кто пишет в счетчик.

то есть, сделать процесс, чувствительный ко всему и уже внутри выбирать, что
именно случилось?

IT> А сейчас получается, что регистр счетчика должен одновременно
IT> принимать значения и счетчик+1 и "загружаемое значение".

именно так.

IT> Двупортовая память не спасет, она только разделит счетчик на две
IT> альтернативные ветки.

IT> if rising_edge(clk)
IT> if load = '1 then counter <= load_value;
IT> elsif (тут проверка на достижение конца и инкремент)

Ага. Ясно.

. С уважением, Hикита.
... Во всём виноваты тараканы в голове.

Nickita A Startcev

unread,
Nov 28, 2007, 9:32:56 AM11/28/07
to
Привет, Ilia !


27 Nov 07 , 22:24 Ilia Tarasov писал к Nickita A Startcev:

IT> if rising_edge(clk)
IT> if load = '1 then counter <= load_value;
IT> elsif (тут проверка на достижение конца и инкремент)

Ага. Ясно.
Точнее неясно. Где и кто должен сбрасывать 'load'?

Ilia Tarasov

unread,
Nov 28, 2007, 3:13:24 PM11/28/07
to
Wed Nov 28 2007 15:16, Nickita A Startcev wrote to Ilia Tarasov:

NAS> то есть, сделать процесс, чувствительный ко всему и уже внутри выбирать,
NAS> что именно случилось?

Только к clk. А уже внутри проверять управляющие сигналы. То, что проверяется
строго по фронту тактового, в список чувствительности не пишется (и вообще в
него пишутся сигналы, изменение которых должно приводить к пересчету _модели_,
на синтез список чувствительности не влияет).

bye

Ilia Tarasov

unread,
Nov 28, 2007, 3:13:47 PM11/28/07
to
Wed Nov 28 2007 17:32, Nickita A Startcev wrote to Ilia Tarasov:

IT>> if rising_edge(clk)
IT>> if load = '1 then counter <= load_value;
IT>> elsif (тут проверка на достижение конца и инкремент)

NAS> Ага. Ясно.
NAS> Точнее неясно. Где и кто должен сбрасывать 'load'?

Так это... внешняя схема.

bye

Nickita A Startcev

unread,
Nov 29, 2007, 4:02:18 AM11/29/07
to
Привет, Ilia !


28 Nov 07 , 23:13 Ilia Tarasov писал к Nickita A Startcev:

IT>>> if rising_edge(clk)
IT>>> if load = '1 then counter <= load_value;
IT>>> elsif (тут проверка на достижение конца и инкремент)

NAS>> Ага. Ясно.
NAS>> Точнее неясно. Где и кто должен сбрасывать 'load'?

IT> Так это... внешняя схема.

Как я понял, транслятор выругался на "в эту переменную пишут из разных мест,
асинхронно. Конфликты будут".
А ты свёл задачу к кем же конфликтам, но не с счетчиком, а с load'ом.

. С уважением, Hикита.
... "Пыль толще 1 см падает сама".

Ilia Tarasov

unread,
Nov 29, 2007, 7:05:03 AM11/29/07
to
Thu Nov 29 2007 12:02, Nickita A Startcev wrote to Ilia Tarasov:

NAS> Как я понял, транслятор выругался на "в эту переменную пишут из разных
NAS> мест, асинхронно. Конфликты будут".
NAS> А ты свёл задачу к кем же конфликтам, но не с счетчиком, а с load'ом.

Load с явным приоритетом. Если load, то плевать на "не-load".

bye

Valentin Nechayev

unread,
Nov 29, 2007, 2:43:29 PM11/29/07
to
>>> Nickita A Startcev wrote:

NAS> Делаю 'real time clock' для восьмибитной системы.
NAS> Есть процесс, который по внешним клокам инкрементирует счетчик.
NAS> Есть процесс, который по внешнему сигналу чтения читает (в том числе и) этот
NAS> счетчик.
NAS> (пока всё ок).
NAS> Добавляю процесс, который по внешнему сигналу записи пишет в счетчик, получаю
NAS> конфликт.

А помнишь наше общение в ЖЖ, когда я утверждал, что счётчик,
считающий время, переписывать нельзя, а надо использовать второй
счётчик?

Hа данной системе не хватает ресурсов, или всё же считаешь, что
можно обойтись одним?


-netch-

Nickita A Startcev

unread,
Nov 30, 2007, 3:26:22 AM11/30/07
to
Привет, Valentin !


29 Nov 07 , 22:43 Valentin Nechayev писал к Nickita A Startcev:

NAS>> Делаю 'real time clock' для восьмибитной системы.
NAS>> Есть процесс, который по внешним клокам инкрементирует счетчик.
NAS>> Есть процесс, который по внешнему сигналу чтения читает (в том

NAS>> числе и) этот счетчик. (пока всё ок). Добавляю процесс, который
NAS>> по внешнему сигналу записи пишет в счетчик, получаю конфликт.

VN> А помнишь наше общение в ЖЖ, когда я утверждал, что счётчик,
VN> считающий время, переписывать нельзя, а надо использовать второй
VN> счётчик?

Помню, но слабо.
Перезапись этого счетчика заинтересовала меня в основном в смысле общей
стройности концепции. Кроме того, расширил счетчик до 32 бит, 136 лет аптайма у
этого девайса, я думаю, не будет.

VN> Hа данной системе не хватает ресурсов, или всё же считаешь, что
VN> можно обойтись одним?

Ресурсов хватает, вопрос скорее общеинтересный, чем 'вот кровь из носа надо
сделать так'.

Сейчас привязал все процессы к клоку (в том числе и инкремент счетчика), запись
нового значения делаю во временный регистр, его переписываю "по запросу" в
регистр счетчика. Запрос снимаю из того же места, где и выставляю, но по
заднему фронту сигнала записи (или по низкому уровню? не помню)

ps: сейчас в проекте сидит ядро пикоблейз, 32 ШИМа, 7сегментный индикатор,
вывод на 8светодиодиков, УАРТ. Всё работает независимо от процессора, например,
семисегментник выглядит как три восьмиразрядных регистра (пишем два числа и
маску 'десятичных точек', железо само всё отображает не отвлекая процессор на
регенерацию). Размышляю о блокирующем вводе/выводе в/из УАРТ.
Проект занимает порядка 13-25% ресурсов xc3s200 (то есть, в принципе, влезет и
в 50й), заводится на 70МГц, но об оптимизации я пока что вообще не задумывался.

. С уважением, Hикита.
... как игогокнется, так и отфофыкнется?

Nickita A Startcev

unread,
Nov 30, 2007, 3:12:58 AM11/30/07
to
Привет, Ilia !


29 Nov 07 , 15:05 Ilia Tarasov писал к Nickita A Startcev:

NAS>> Как я понял, транслятор выругался на "в эту переменную пишут из

NAS>> разных мест, асинхронно. Конфликты будут". А ты свёл задачу к
NAS>> кем же конфликтам, но не с счетчиком, а с load'ом.

IT> Load с явным приоритетом. Если load, то плевать на "не-load".

В переменную load запись идет в нескольких асинхронных местах. Разве нет?

. С уважением, Hикита.
... Чужие неврозы надо уважать. Что не сделаешь для хорошего человека?

Ilia Tarasov

unread,
Nov 30, 2007, 2:45:37 PM11/30/07
to
Fri Nov 30 2007 11:12, Nickita A Startcev wrote to Ilia Tarasov:

NAS> В переменную load запись идет в нескольких асинхронных местах. Разве
NAS> нет?

Hадо сделать в одном. По принципу "если процессор хочет - он пишет, иначе
нет".

bye

0 new messages