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

Непонятки с Verilog-ом

Чтото в 3х соснах заблудился.

Ковыряюсь с Lattice CPLD.

Задачка: надо shift register,

По приходу фронта загружается, и пока я все 24 бита не считаю,

загружатся не может.

Чудеса в решете, однако, который день ковыряюсь.

Сузил до:

 

reg ready = 0;
reg bits = 0;

always@(negedge myclk)
    begin
        if (!ready)
                        begin
                    bits = 24;
                    ready <= 1;
                end
                else
                     begin
            
            if (bits != 0)
                //Сюда никогда не попадает!!
                begin
                bits = bits - 1;
                end
            else
                begin
                    ready <= 0;
                end
            end
    
    end

 

и не могу попасть внутрь (bits != 0)

почемуто всегда 0. Пробовал задержки добавлять, ассайнменты блокинг/нонблокинг.

Ничего..

 

непонятно, что делать..

Изменено пользователем A. Fig Lee

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

reg bits = 0;

 

Регистр bits размером в один бит. При записи в него значения 24, берется последний бит '0'. Замените на:

reg [4:0] bits = 0;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

reg bits = 0;
                bits = 24;

 

и не могу попасть внутрь (bits != 0)

почемуто всегда 0. Пробовал задержки добавлять, ассайнменты блокинг/нонблокинг.

Ничего..

 

непонятно, что делать..

Мне кажется, что не стоит утрамбовывать 24 в однобитный регистр. Интересно, синтезатор не даёт здесь warning?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Регистр bits размером в один бит. При записи в него значения 24, берется последний бит '0'. Замените на:

reg [4:0] bits = 0;

Yes! Genius!

 

С меня пиво! А то я уже чуть не тронулся.. :)

 

Мне кажется, что не стоит утрамбовывать 24 в однобитный регистр. Интересно, синтезатор не даёт здесь warning?

Точно, давал, но за простыней сообщений не обращал внимание:

 

@W: CL189 :"C:\embed\lattice\ispmach4256zebreakoutboardevaluationkitsource\lc4256ze_ctl\pl_shift_reg24.v":19:1:19:6|Register bit bits is always 0, optimizing ..

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

reg ready = 0;

reg bits = 0;

 

always@(negedge myclk)

begin

if (!ready)

begin

bits = 24;

ready <= 1;

end

else

begin

......

непонятно, что делать..

 

И Вы не знаете разницы между блокирующим и неблокирующим назначением...

И для кого же я делал "Краткий Курс"???

Неужели прочитать лень?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И Вы не знаете разницы между блокирующим и неблокирующим назначением...

И для кого же я делал "Краткий Курс"???

Неужели прочитать лень?

Какая глава? Я парочку пробежал.

Блокирующие и НЕблокирущие, я из гугла так и не понял что именно они блокируют, следующее назначение в блоке?

Между begin/end блокирующие будут в очереди исполнятся?

Почему компайлер ругается на другой блок, если там делать неблокирующее, а тут блокирующее..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

неблокирующие все работают параллельно

блокирующие по очереди, как написаны

 

то есть

 

A<=B

B<=A

одновременно поменяются местами

 

A=B

B=A

присвояться по очереди, в один такт, но значения не поменяются местами, Значение А потеряется фактически...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

неблокирующие все работают параллельно

блокирующие по очереди, как написаны

 

то есть

 

A<=B

B<=A

одновременно поменяются местами

 

A=B

B=A

присвояться по очереди, в один такт, но значения не поменяются местами, Значение А потеряется фактически...

Спасибо. неясно только почему компайлер ругается если в разных ветках begin/end разные назначения. Синтезировать не может?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. неясно только почему компайлер ругается если в разных ветках begin/end разные назначения. Синтезировать не может?

- А что будет если дёрнуть за две верёвочки одновременно?

- Разве непонятно - я упаду с жёрдочки

(с) один старый анекдот

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- А что будет если дёрнуть за две верёвочки одновременно?

- Разве непонятно - я упаду с жёрдочки

(с) один старый анекдот

Спасибо, так и думал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...