Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Verilog. Как это культурно пишется?

Пн фев 06, 2017 09:57:05

Доброго дня! Решаю следующую подзадачу: подсистема ничего не делает пока не получит сигнал start(передний фронт). Далее она ждет события trig. по приходу фронта выдает 640 клоков на DataLock и опять сваливается в ожидание start.
Навоял я следующие, однако есть стойкое ощущение, что это можно написать компактнее и более читаемо.
Практики программирования практически нет. Знатоки, прошу, поправьте нуба, покажите класс)))

input clk;
input start;
input trig;
output DataLock;


reg wait_for_trig;
reg [10:0] LockCounter;
wire LockCounterNotZero;
wire LoadCounter;


assign DataLock = LockCounterNotZero ? clk : 0;
assign LockCounterNotZero = (LockCounter!=0)? 1:0;
assign LoadCounter = wait_for_trig & trig;

always @ (posedge start or posedge LoadCounter)
if (start) begin
wait_for_trig<=1;
end else begin
if (LoadCounter) wait_for_trig<=0;
end

always @ (posedge clk or posedge LoadCounter)
begin
if (LoadCounter) begin
LockCounter <=640;
end else begin
if (clk && LockCounterNotZero) LockCounter <= LockCounter-1;
end
end
Ответить