Jump to content

    
Sign in to follow this  
A. Fig Lee

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

Recommended Posts

Чтото в 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. Пробовал задержки добавлять, ассайнменты блокинг/нонблокинг.

Ничего..

 

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

Edited by A. Fig Lee

Share this post


Link to post
Share on other sites
reg bits = 0;
                bits = 24;

 

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

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

Ничего..

 

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

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

 

Share this post


Link to post
Share on other sites
Регистр 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 ..

 

Share this post


Link to post
Share on other sites
reg ready = 0;

reg bits = 0;

 

always@(negedge myclk)

begin

if (!ready)

begin

bits = 24;

ready <= 1;

end

else

begin

......

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

 

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

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

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

Share this post


Link to post
Share on other sites
И Вы не знаете разницы между блокирующим и неблокирующим назначением...

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

то есть

 

A<=B

B<=A

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

 

A=B

B=A

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

Share this post


Link to post
Share on other sites
неблокирующие все работают параллельно

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

 

то есть

 

A<=B

B<=A

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

 

A=B

B=A

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

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

Share this post


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

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

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

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

 

Share this post


Link to post
Share on other sites
- А что будет если дёрнуть за две верёвочки одновременно?

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this