реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Тупой вопрос про Verilog
LAS9891
сообщение May 3 2017, 08:59
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 194
Регистрация: 18-06-15
Пользователь №: 87 194



Возник такой тупой вопрос. Есть такой код:

Код
reg [7:0] temp = 8'h00;
reg [3:0] n = 4'b0000;
                
always@(posedge CLOCK)
begin
if(n<=3'b111)
    begin
    temp[n] <= 1'b1;
    n<=n+1'b1;
    end
end


Что будет содержаться в temp[0] при выполнении такой программы?
Что произойдёт, когда случится первый фронт CLOCK: temp[0] <= 1'b1; или temp[1] <= 1'b1; ?

И что будет если код переписать так:

Код
reg [7:0] temp = 8'h00;
reg [3:0] n = 4'b0000;
                
always@(posedge CLOCK)
begin
if(n<=3'b111)
    begin
    temp[n] = 1'b1;
    n<=n+1'b1;
    end
end


Сообщение отредактировал LAS9891 - May 3 2017, 10:37
Go to the top of the page
 
+Quote Post
Raven
сообщение May 3 2017, 10:34
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 441
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987



Чего вы хотели добиться вот этим:
Код
if(n<=3'b111)

Ведь под это условие подпадает любой физически реализуемый код n?
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 3 2017, 10:39
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 194
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(Raven @ May 3 2017, 14:34) *
Чего вы хотели добиться вот этим:
Код
if(n<=3'b111)

Ведь под это условие подпадает любой физически реализуемый код n?

Исправил. Но это и не важно. Меня интересует, что произойдёт, когда случится первый фронт CLOCK: temp[0] <= 1'b1; или temp[1] <= 1'b1; ?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 3 2017, 10:54
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 907
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(LAS9891 @ May 3 2017, 11:59) *
Возник такой тупой вопрос. Есть такой код:

Код
reg [7:0] temp = 8'h00;
reg [3:0] n = 4'b0000;
                
always@(posedge CLOCK)
begin
if(n<=3'b111)
    begin
    temp[n] <= 1'b1;
    n<=n+1'b1;
    end
end


Что будет содержаться в temp[0] при выполнении такой программы?
Что произойдёт, когда случится первый фронт CLOCK: temp[0] <= 1'b1; или temp[1] <= 1'b1; ?
...


Во общем случае зависит от значения n в момент CLOCK sm.gif
Если предположить что n=0 то temp[0] <= 1'b1
Уже говорилось что неблокирующие присваивания (<=) исполняются в конце дельта цикла симуляции. Если по коду то грубо в точке end (которая от always begin) А точка назначения и значение присваивания вычисляется до этого момента.

Блокирующие присваивания (=) исполняются мгновенно в момент присваивания.
Ну а теперь думаю Вы сможете ответить что же будет и во втором случае.

Удачи! Rob.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 3 2017, 11:13
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 194
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(RobFPGA @ May 3 2017, 14:54) *
Во общем случае зависит от значения n в момент CLOCK sm.gif
Если предположить что n=0 то temp[0] <= 1'b1


А если учесть что значение n (n<=n+1'b1) и значение temp (temp[n] <= 1'b1;) должны измениться одновременно? Какая переменная изменится раньше? Если n раньше, то temp[0] останется нулём, а если temp раньше, то temp[0] будет равно 1. Как это предугадать?

Цитата(RobFPGA @ May 3 2017, 14:54) *
Блокирующие присваивания (=) исполняются мгновенно в момент присваивания.
Ну а теперь думаю Вы сможете ответить что же будет и во втором случае.

Во втором случае, я полагаю temp[0] будет равно 1'b1. Я прав?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 3 2017, 11:21
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 907
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(RobFPGA @ May 3 2017, 13:54) *
...
Уже говорилось что неблокирующие присваивания (<=) исполняются в конце дельта цикла симуляции. Если по коду то грубо в точке end (которая от always begin) А точка назначения и значение присваивания вычисляется ДО этого момента.
....


Да. Впрочем как и в первом случае.

Удачи! Rob.
Go to the top of the page
 
+Quote Post
LAS9891
сообщение May 3 2017, 11:26
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 194
Регистрация: 18-06-15
Пользователь №: 87 194



Цитата(RobFPGA @ May 3 2017, 15:21) *
Да. Впрочем как и в первом случае.


Прикрепленное изображение
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th May 2017 - 17:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.04498 секунд с 7
ELECTRONIX ©2004-2016