Le code ci-dessous implémente un DAC Delta-sigma dans Verilog, à partir d'une note d'application Xilinx et je veux écrire un code VHDL équivalent. Je ne sais rien de Verilog et je suis débutant en VHDL donc j'ai dû faire beaucoup de suppositions et probablement des erreurs de débutant (code ci-dessous). Je ne suis pas sûr que la traduction est correcte, quelqu'un peut-il vous aider s'il vous plaît?DAC Delta-sigma de Verilog à VHDL
originale Verilog
`timescale 100 ps/10 ps
`define MSBI 7
module dac(DACout, DACin, Clk, Reset);
output DACout;
reg DACout;
input [`MSBI:0] DACin;
input Clk;
input Reset;
reg [`MSBI+2:0] DeltaAdder;
reg [`MSBI+2:0] SigmaAdder;
reg [`MSBI+2:0] SigmaLatch;
reg [`MSBI+2:0] DeltaB;
always @(SigmaLatch) DeltaB = {SigmaLatch[`MSBI+2], SigmaLatch[`MSBI+2]} << (`MSBI+1);
always @(DACin or DeltaB) DeltaAdder = DACin + DeltaB;
always @(DeltaAdder or SigmaLatch) SigmaAdder = DeltaAdder + SigmaLatch;
always @(posedge Clk or posedge Reset)
begin
if(Reset)
begin
SigmaLatch <= #1 1'bl << (`MSBI+1);
DACout <= #1 1'b0;
end
else
begin
SigmaLatch <== #1 SigmaAdder;
DACout <= #1 SigmaLatch[`MSBI+2];
end
end
endmodule
Mon essai en VHDL:
entity audio is
generic(
width : integer := 8
);
port(
reset : in std_logic;
clock : in std_logic;
dacin : in std_logic_vector(width-1 downto 0);
dacout : out std_logic
);
end entity;
architecture behavioral of audio is
signal deltaadder : std_logic_vector(width+2 downto 0);
signal sigmaadder : std_logic_vector(width+2 downto 0);
signal sigmalatch : std_logic_vector(width+2 downto 0);
signal deltafeedback : std_logic_vector(width+2 downto 0);
begin
deltafeedback <= (sigmalatch(width+2), sigmalatch(width+2), others => '0');
deltaadder <= dacin + deltafeedback;
sigmaadder <= deltaadder + sigmalatch;
process(clock, reset)
begin
if (reset = '1') then
sigmalatch <= ('1', others => '0');
dacout <= '0';
elsif rising_edge(clock) then
sigmalatch <= sigmaadder;
dacout <= sigmalatch(width+2);
end if;
end process;
end architecture;
Avez-vous essayé de simuler à la fois le Verilog et le VHDL et de vérifier la sortie? –
Les outils de vérification d'équivalence peuvent vérifier si votre code Verilog est fonctionnellement équivalent à votre code VHDL. Votre Verilog a l'air d'être synthétisable si vous vous débarrassez des délais # 1. – toolic