-
qvrock
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 13
-
Спасибо получено: 0
-
-
|
Ясно, ну применительно к моему коду я могу тыкать везде неблокирующий, по идее, надо только о порядке расположения команд думать.
зы: У меня не стоит цели синтезировать реальное ЦУ, просто курсовой проект. Дело в том, что я планирую и дальше заниматься этим делом и хочется как можно раньше разобраться именно описанием схемы на HDL.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Серый Волк
-
-
Не в сети
-
Давно я тут
-
-
Сообщений: 82
-
Спасибо получено: 2
-
-
-
|
Каким образом можно задать условие в: localparam t1 = 500,
t2 = 200,
t4 = 200,
t5 = 1000,
t6 = 200;
if (mode = 1)
localparam t3 = 100000;
else
localparam t3 = 1000000; Спасибо.
"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
leshabirukov
-
-
Не в сети
-
Захожу иногда
-
-
Сообщений: 56
-
Спасибо получено: 13
-
-
|
Как-то так: parameter mode = 1;
parameter t3 = mode==1 ? 100000 : 1000000; Серый Волк пишет: Каким образом можно задать условие в: localparam t1 = 500,
t2 = 200,
t4 = 200,
t5 = 1000,
t6 = 200;
if (mode = 1)
localparam t3 = 100000;
else
localparam t3 = 1000000; Спасибо.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Серый Волк
-
-
Не в сети
-
Давно я тут
-
-
Сообщений: 82
-
Спасибо получено: 2
-
-
-
|
Это всё замечательно если бы не то что mode - это входной пин устройства :(
Error (10192): Verilog HDL Defparam Statement error at block_form.v(21): value for parameter "t3" must be constant expression
"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
ВитГо
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 15
-
Спасибо получено: 4
-
-
|
а где в вашем коде написано что t3 регистр или выходной пин ?
вы его определили как константу !
вот и получили ошибку присваивания
определите t3 как reg что ли...
а к моде вроде как у компилятора претензий пока нет B)
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от ВитГо.
|
-
Серый Волк
-
-
Не в сети
-
Давно я тут
-
-
Сообщений: 82
-
Спасибо получено: 2
-
-
-
|
А конфликта не будет?
t3 - это ведь параметр, а reg - это уже переменная.
Они вроде разные по сути.
"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
ВитГо
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 15
-
Спасибо получено: 4
-
-
|
конфликт у вас сейчас - потому что вы константе пытаетесь присвоить значение по условию
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Серый Волк
-
-
Не в сети
-
Давно я тут
-
-
Сообщений: 82
-
Спасибо получено: 2
-
-
-
|
Согласен - это безрассудно :)
"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
qvrock
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 13
-
Спасибо получено: 0
-
-
|
Доброе время суток.
Пробема такова: в результате симуляции работы устройства счетчик не кончается на 400 а идет до конца (511 т.к. 9битн). Там дальше, по условию, должен был увеличиться счетчик отвечающий за j на единицу (а-ля цикл в цикле)
Иллюстрация
clip2net.com/s/2DB7q
Из-за чего это?
Прилагаю файл целиком но работа этого участка описана в блоке под комментарием // 1 //
Заранее спасибо
mdss.v
что-то не прикрепляется тут файл
narod.ru/disk/64751836001.dbf0c157987967...447f5859/mdss.v.html
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от qvrock.
|
-
ВитГо
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 15
-
Спасибо получено: 4
-
-
|
сложные вы однако любите конструкции..
боюсь что они не совсем подходят для программирования плис
в вашем случае у вас срабатывает первое условие
// if it's 0 of 9 (first) 400-iteration cycle? -> write data in ram1
if (j == 0)
begin
ram1 [i] <= datain;
i <= i + 1;
end
// if not -> accumulate data in ram1
else ..... тут остальной код
и поскольку j=0 (по симуляции это видно) то i будет просто инкрементироваться..
до остальных вариантов процесс не доходит (они же в else)
возможно что вам первое условие нужно более полно определить, как то так: // if it's 0 of 9 (first) 400-iteration cycle? -> write data in ram1
if ((j == 0) && (i<400))
begin
ram1 [i] <= datain;
i <= i + 1;
end
// if not -> accumulate data in ram1
else ..... тут остальной код
тогда при i>=400 вы попадете в else
но у вас второе условие фактически (при j=0) повторяет первое else if ((i<400) && (j<10))
begin
ram1 [i] <= ram1 [i] + datain;
i <= i + 1;
end а вот код на исполнение чуть отличается...
нужно еще раз пересмотреть алгоритм! чтобы более четко выбирать код по условию
что-то типа
if (j<10)
begin
if (i<400)
begin
if (j=0) ram1 [i] <= datain; else ram1 [i] <= ram1 [i] + datain;
i <= i + 1;
end else
begin // здесь i>=400
j <= j + 1;
i <= 0;
end
end else // здесь j>=10
begin
j <= 0;
i <= 0;
end
в среде не проверял, но думаю идея понятна...
p.s. хотя все равно это решение имхо не совсем то к чему бы я стремился...
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от ВитГо.
|
Время создания страницы: 0.162 секунд