МАРСОХОД

Open Source Hardware Project

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

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

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

Ты имел ввиду делитель с переключаемым коэффициентом деления?
Очень просто.
Синхронный счётчик с входом синхроного сброса. Цифровой компаратор. На один вход компаратора - выходные состояния счётчика, на другой вход - устанавливаемый коэффициент деления. Выход компаратора к входу синхронной установки счётчика.
Всё.
Спасибо сказали: Серый Волк

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

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

Угу, с переключаемым...
А то я уж начал писать чушь:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


PS: наверное всё таки к сбросу? :)

SOVA пишет: Выход компаратора к входу синхронной установки счётчика.

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

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

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

Ну если на верилоге то, наверное, счетчик(цикл) и при накоплении до значения n = коэффициенту деления уже подавать на выход сигнал, т.е. раз в n тактов

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

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

Ну да, я так и делал, проблема в том что нужно еще и без деления при определённом коэффициенте (=1).
Столкнулся с двоякой ситуацией связанной с assign внутри и вне цикла.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Ругань Quartus'а:
Error (10137): Verilog HDL Procedural Assignment error at divider_time.v(12): object "cout" on left-hand side of assignment must have a variable data type

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

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

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

я новичок и осваивал верилог по вашим примерам
но возникла проблема и вопрос что я делаю не так...
задача загрузить данные (14 байт) в буфферную память модуля для обработки
для загрузки используется импульс такта загрузки (фронт или спад) пусть фронт ld_clk
при этом модуль тактируется clk=20 мгц, а тактовая загрузки ld_clk = 100 кГц
пробовал двумя вариантами и с обоими проблемы, в частности пропуск
загрузки, те в буфере меньше 14 байт.
первый вариант

always @(posedge ld_clk )
begin
data_buf[count_buf] = data; // load data into buffer
count_buf = count_buf + 4'b1; // counter loaded byte to buffer
end
успешно работает в симуляторе но принципиально не работает в кристалле (у меня циклон3 тот же что в марсоходе2)

второй вариант реализован на выделении фронта сигнала
marsohod.org/verilog/157-verilogedges

assign back_ld_clk = prev_ld_clk & ~ld_clk; // need to check load clock back edge
assign front_ld_clk = ~prev_ld_clk & ld_clk; // need to check load clock back edge

always @(posedge clk )
prev_ld_clk <= ld_clk;

always @(posedge clk )
begin
if (front_ld_clk)
begin
data_buf[count_buf] = data; // load data into buffer
count_buf = count_buf + 4'b1; // counter loaded byte to buffer
end
end
тут вообще туши свет.... в симуляторе диаграмма состояний вообще не соответствует той что
приводится в примере. В чем загвоздка я ума не приложу
на скрине видно что не правильно формируются как выделение фронта так и спада
на втором что странно работает задержка на триггере



Вложения:

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

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

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

Нашел другой способ устойчивой синхронизации загрузки, однако проблема странного поведения этой модели так и остается...

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

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

Добрый вечер!

output reg [length-1:0] adr1_out,//регистр со значением адреса
output wire [length-1:0] adr1_bus,//8-разрядная шина адреса

Значения с шины можно записать в регистр таким образом:
adr1_out<=adr1_bus;

Но мне нужно наоборот, записать данные из регистра на шину. Насколько я понимаю, такая форма записи не приемлема:
adr1_bus<=adr1_out;

Изучаю недавно, подскажите, как можно записать правильно?

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

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

Данные хранятся только в регистрах, если шину соединить с регистром то на ней будет то же значение что и на регистре с которым она соединена, так сказать "автоматически".

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

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

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

Доброе время суток,

подскажите пожалусто как делать sub-module (т.е. модуль в модуле)? Я очень новенький в програмировании поэтому прошу снисхождения за ошибки.

В следующей программе я попытался соединить входа "a, b" модуля "verilog1" с входами "y, z" модуля "verilog2". При компиляции не жалуется, но создается такое впечатление что модуль "verilog2" вообще не существует. "Pin planner" (квартус 13.0 без лицензии) видит только входа "a, b" и выхода "outa, outb" и больше ничего.

Подскажите где моя ошибка или это как-то связано с лицензией квартуса?

Благодарю


module verilog1
(
a,
b,
outa,
outb
);

input a, b;
output outa, outb;
reg outa;
assign outb = !outa;

always @ (posedge b)

outa <= a;

endmodule



module verilog2

(

input y, z,
output reg qa, qb

);


verilog1 verilog2 ( .a(y), .b(z) ); //соединение входов verilog1 с verilog2


always @ (posedge y)

begin

qa <= 1'b0;

end

always @ (posedge z)

begin

qb <= 1'b0;

end

endmodule

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

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

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

module verilog1
(
a,
b,
outa,
outb
);

input a, b;
output outa, outb;
reg outa;
assign outb = !outa;

always @ (posedge b)

outa <= a;

endmodule



module verilog2

(

input y, z,
output qa, qb

);


verilog1 Luboe_nazvanie ( .a(y), .b(z), .outa(qa), .outb(qb)); //соединение входов verilog1 с verilog2

endmodule


Получается, что verilog2 является модулем верхнего уровня, в котором объявлен модуль verilog1(точнее его копия Luboe_nazvanie).

PS: не большой спец, так что если че не так --- прошу прощения))

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

Время создания страницы: 0.787 секунд

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