2015-09-25 1 views
0

Кажется, что это было бы просто, но я не могу узнать, как это сделать где угодно ... Все, что я хочу сделать, это добавить 1 к 4-битной провод.Как добавить 1 к 4-битовому проводу в Verilog

В целом, я хочу подсчитать количество 1 в 8-битной переменной. Назовем этот вход inA. Выход будет отключен. Оба они определены как провода; inA - 8 бит, где outA - 4 бита.

wire[0:7] inA; 
wire[0:3] outA; 

я могу сделать цикл, чтобы пройти через массив:

for (i = 0; i <= 7; i = i + 1) begin 
    if (inA[i] == 1) begin 
     outA <= outA + 1; 
    end 
end 

Но это не работает. Может кто-нибудь помочь? Я чрезвычайно новичок в Verilog (и VHDL), поэтому я действительно не понимаю, что я делаю неправильно.

ответ

0

Есть несколько способов сделать это, вот один вариант:

reg [0:3] ones; 
    integer i; 
    always @ (inA) begin 
    ones = 0; 
    for (i = 0; i < 8; i = i + 1) begin 
     ones = ones + inA[i]; 
    end 
    end 
    assign outA = ones; 

Поскольку вы не предоставили свой полный исходный код (например, в контексте цикла for), мы можем только предполагать, что проблема с этим.

Помните, что не-блокирующих заданий, как outA <= outA + 1 будет должен быть казнен в конце always блока таким образом, что последнее назначение будет переопределение все предыдущие.

С outA (которые, кстати, должны быть reg, если ваш цикл for встроен в always блоке), обновляются только после того, как always блока закончило «выполнение», только inA[7] может вызвать прибавку к outA ,

Дополнительную информацию о том, как выполняются блоки always, см. На странице my answer here.

+0

Это было прекрасно, спасибо! Я предполагаю добавление единиц, а затем назначая вывод, значение того, что мне не хватало. Еще раз спасибо! – Apolymoxic

+0

@Apolymoxic, почему вам нужно значение как «провод»? – Morgan

+0

@Morgan Я не думаю, что это было абсолютно необходимо ... это было просто, где я начал. Предполагалось, что он имитирует выход, и в реальной функционирующей аппаратной программе не будет ли это проводом? – Apolymoxic

Смежные вопросы