Мне нужно реализовать 2 или более независимых устройства на FPGA (Altera Cyclone III). Например: два счетчика по одному и по два. Как мне это сделать? И как использовать эти устройства параллельно? Спасибо всем!
Все происходит параллельно на FPGA. Вот пример решения в Verilog
Модуль счетчика
module counter #(
parameter pCntNum =1
) (
input iClk,
input iRst,
output reg [7:0] oCnt
);
always @ (posedge iClk)
if (iRst) begin
oCnt <=0;
end else begin
oCnt <= oCnt +pCntNum;
end
endmodule
Верхний модуль
module top (
input iClk,
input iRst,
output [7:0] oCntBy1,
output [7:0] oCntBy2
);
//Instantiate count by 1 module
counter #(
.pCntNum(1)
)counter_by_1_inst(
.iClk(iClk),
.iRst(iRst),
.oCnt(oCntBy1)
);
//Instantiate count by 2 module
counter #(
.pCntNum(2)
)counter_by_2_inst(
.iClk(iClk),
.iRst(iRst),
.oCnt(oCntBy2)
);
endmodule
Есть много способов сделать это, однако я дал решение, которое, я думаю, лучше всего иллюстрирует то, о чем вы спрашиваете.
Обновлено: я только что видел тег для VHDL, а не для Verilog. Тот же подход и механизмы применяются к решению VHDL, однако Quartus принимает исходные файлы как Verilog, так и VHDL (у вас даже может быть кодовая база с обоими). С помощью простого руководства по VHDL вы сможете создать решение, эквивалентное Verilog, которое я написал, если потребуется.