Мне нужно повысить (2x) мои данные, используя Verilog.Я думаю использовать три порта для ввода и один порт для вывода.Входные порты являются фильтрами, сбросом и синхронизацией.Выходной порт отфильтрован.Также мне нужен динамический размер ввода.Как я могу реализовать это с Verilog.
Edit1: мои входные и выходные данные имеют длину 16 бит.Мне просто нужен код Verilog для этого:
Если ввод: 1 2 3, то вывод: 1 0 2 0 3 0.
Если ввод: 1 2 3 4 5, то вывод: 1 0 2 0 3 0 4 0 5 0.
Edit2: я создал файл verilog для решения этой проблемы, но он не решил мою проблему.
US1.v file
`timescale 1ns / 1ps
module US1 (filterin,clk,filterinus);
input [15:0] filterin;
input clk;
output reg [15:0] filterinus;
integer i=0;
always @ (posedge clk) begin
if (i==0) begin
filterinus <= filterin;
end
else begin
filterinus <= 0;
end
i=~i;
end
endmodule
Я тестировал этот код на следующем испытательном стенде:
Файл Test.v
`timescale 1ps/1ps
module Test;
reg [15:0] filterin;
reg clk;
wire [15:0] filterinus;
US1 uut (
.filterin(filterin),
.clk(clk),
.filterinus(filterinus)
);
initial begin
clk = 1;
filterin = 1;
#2 filterin = 2;
#2 filterin = 3;
#2 filterin = 4;
#2 filterin = 5;
#30 $finish;
end
always #1 clk = ~clk;
endmodule
Как видно, мои данные: 1 2 3 4 5. Мойвывод: 1 0 3 0 5 0 5 0 5 0 ... Мне нужно увидеть: 1 0 2 0 3 0 4 0 5 0 0 0 0 0 ...