МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Вопросы по языку Verilog

Re: Вопросы по языку Verilog 6 года 10 мес. назад #1312

В том то и дело - я там буферы задумал, а с шиной их неудобно использовать.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
Последнее редактирование: от Серый Волк.

Re: Вопросы по языку Verilog 6 года 10 мес. назад #1314

Серый Волк пишет: В том то и дело - я там буферы задумал, а с шиной их неудобно использовать.


Называем шину чтонибудь[6..0], буферу присваеваем чтонибудь[0], чтонибудь[1] и тд. все просто.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 6 года 10 мес. назад #1315

Вопрос снят - разобрался сам. Всем кто хотел помочь - спасибо.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...
Последнее редактирование: от Серый Волк.

Re: Вопросы по языку Verilog 6 года 9 мес. назад #1332

Доброе время суток всем.
Немного не понимаю последовательность выполнения кода, помогите разобраться.

Смысл такой (если упростить)

for (j=0; j < 400; j=j+1)
begin
	always @ (posedge clk);
	ram1[i] = ram1[i] + datain;
end

Будет ли это 400 последовательных записей по фронту тактового?
Получается ли что после входа в цикл после begin программа будет ждать пока не наступит фронт?


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

Извините, если не совсем понятно описал, сложно перестроиться после обычных языков программирования )

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от qvrock.

Re: Вопросы по языку Verilog 6 года 9 мес. назад #1334

так не делается

при помощи этого
always @ (posedge clk)
begin

end
ждем фронт

и внутри уже записываем и считаем, что то такое..
always @ (posedge clk)
begin
  i=>i+1;
  if (i<400)    ram1[i] = ram1[i] + datain;
end

в плис как бы нет последовательности выполнения команд, это схема !
но есть возможность задать в какой момент произойдет присваивание (это про "=>" и "=")

в примере выше и увеличение счетчика на единицу и сравнение с последующей записью исполняются одновременно !

p.s. я не профессионал, возможно что меня сейчас поправят немного, но общий смысл помоему правильно написал
Спасибо сказали: qvrock

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от ВитГо.

Re: Вопросы по языку Verilog 6 года 9 мес. назад #1335

Извините, если не совсем понятно описал, сложно перестроиться после обычных языков программирования )


Я бы посоветовал попробовать для начала графический интерфейс что бы понять что такое плис, а потом программировать пытаться, ведь это не язык программирования а язык описания аппаратуры.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 6 года 9 мес. назад #1336

Спасибо )
За это время дошло как работает, решил делать так:
// 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.

Re: Вопросы по языку Verilog 6 года 9 мес. назад #1337

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

я где то при помощи гугла находил понятное объяснение

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 6 года 9 мес. назад #1338

Про блокирующие и неблокирующие читал, смысл в том что использование "<=" не задерживает а с "=" происходит сначала вычисление а потом переход дальше.
Как лучше в циклах использовать пока не думал еще.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 6 года 9 мес. назад #1339

просто я когда эксперементировал со скоростью - без <= не получал большой скорости работы (я делал контроллер для захвата цифрового потока с АЦП и записа в SRAM (делаю цифровой осциллограф)
но мне нужна была скорость записи порядка 120 мб\с (причем память была всего с 10 нс циклом)

если таких требований по скорости нет - то наверное не заморачивайтесь сильно :-)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от ВитГо.
Время создания страницы: 0.224 секунд

ВКонтакте  facebook  GitHub  YouTube  Twitter