-
Серый Волк
-
-
Не в сети
-
Давно я тут
-
-
Сообщений: 82
-
Спасибо получено: 2
-
-
-
|
В том то и дело - я там буферы задумал, а с шиной их неудобно использовать.
"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Masterix
-
-
Не в сети
-
Захожу иногда
-
-
Сообщений: 65
-
Спасибо получено: 1
-
-
-
-
|
Серый Волк пишет: В том то и дело - я там буферы задумал, а с шиной их неудобно использовать.
Называем шину чтонибудь[6..0], буферу присваеваем чтонибудь[0], чтонибудь[1] и тд. все просто.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Серый Волк
-
-
Не в сети
-
Давно я тут
-
-
Сообщений: 82
-
Спасибо получено: 2
-
-
-
|
Вопрос снят - разобрался сам. Всем кто хотел помочь - спасибо.
"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
qvrock
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 13
-
Спасибо получено: 0
-
-
|
Доброе время суток всем.
Немного не понимаю последовательность выполнения кода, помогите разобраться.
Смысл такой (если упростить)
for (j=0; j < 400; j=j+1)
begin
always @ (posedge clk);
ram1[i] = ram1[i] + datain;
end
Будет ли это 400 последовательных записей по фронту тактового?
Получается ли что после входа в цикл после begin программа будет ждать пока не наступит фронт?
По задумке, у меня будет цикл вложенный в другой цикл. Есть ли известные проблемы с такой реализацией?
Извините, если не совсем понятно описал, сложно перестроиться после обычных языков программирования )
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от qvrock.
|
-
ВитГо
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 15
-
Спасибо получено: 4
-
-
|
так не делается
при помощи этого always @ (posedge clk)
begin
end ждем фронт
и внутри уже записываем и считаем, что то такое.. always @ (posedge clk)
begin
i=>i+1;
if (i<400) ram1[i] = ram1[i] + datain;
end
в плис как бы нет последовательности выполнения команд, это схема !
но есть возможность задать в какой момент произойдет присваивание (это про "=>" и "=")
в примере выше и увеличение счетчика на единицу и сравнение с последующей записью исполняются одновременно !
p.s. я не профессионал, возможно что меня сейчас поправят немного, но общий смысл помоему правильно написал
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от ВитГо.
|
-
Masterix
-
-
Не в сети
-
Захожу иногда
-
-
Сообщений: 65
-
Спасибо получено: 1
-
-
-
-
|
Извините, если не совсем понятно описал, сложно перестроиться после обычных языков программирования )
Я бы посоветовал попробовать для начала графический интерфейс что бы понять что такое плис, а потом программировать пытаться, ведь это не язык программирования а язык описания аппаратуры.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
qvrock
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 13
-
Спасибо получено: 0
-
-
|
Спасибо )
За это время дошло как работает, решил делать так:
// run once
initial
begin
wrEna=1
i=0
j=0
end
// write/add cycles
always @ ((posedge clk) & wrEna)
begin
// if first = write, else accumulate
if (j=0)
begin
ram1 [i] = datain;
i = i + 1;
end
else if ((i<400) and (j<10))
begin
ram1 [i] = ram1 [i] + datain;
i = i + 1;
end
else if ((i=400) and (j<10))
begin
j = j + 1;
i = 0;
end
else if (j>9)
begin
wrEna = 0;
j = 0;
i = 0;
end
end
Получается что есть i=400 регистров в которые накапливается j=10 отсчетов и после этого wrEna = 0 - запрет на запись.
Все это тактировано clk.
Заранее спасибо если кто что подскажет или исправит
Я бы посоветовал попробовать для начала графический интерфейс что бы понять что такое плис, а потом программировать пытаться, ведь это не язык программирования а язык описания аппаратуры.
У меня был курс ЦУ простейших наподобие регистров, триггеров, счетчиков их синтез с анализом временных диаграмм и я неплохо его освоил, сам принцип работы я понял, проблема появилась сейчас только со сложными алгоритмами т.к. пытался написать алгоритм сразу всей программы, собственно в этом и ошибка, думаю.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от qvrock.
|
-
ВитГо
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 15
-
Спасибо получено: 4
-
-
|
прочитай все таки про блокирующие и неблокирующие присваивания
я где то при помощи гугла находил понятное объяснение
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
qvrock
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 13
-
Спасибо получено: 0
-
-
|
Про блокирующие и неблокирующие читал, смысл в том что использование "<=" не задерживает а с "=" происходит сначала вычисление а потом переход дальше.
Как лучше в циклах использовать пока не думал еще.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
ВитГо
-
-
Не в сети
-
Новый участник
-
-
Сообщений: 15
-
Спасибо получено: 4
-
-
|
просто я когда эксперементировал со скоростью - без <= не получал большой скорости работы (я делал контроллер для захвата цифрового потока с АЦП и записа в SRAM (делаю цифровой осциллограф)
но мне нужна была скорость записи порядка 120 мб\с (причем память была всего с 10 нс циклом)
если таких требований по скорости нет - то наверное не заморачивайтесь сильно :-)
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от ВитГо.
|
Время создания страницы: 0.169 секунд