L
leongch
Guest
Hi Guys,
Ik moet deze VHDL-code om te zetten in de Verilog.Ik probeerde het met de online gratis converter software, het eindresultaat nog steeds fouten, kan advies kunt u hier?
VHDL CODE als volgt
library IEEE;
gebruik IEEE.std_logic_1164.all;
gebruik IEEE.std_logic_arith.all;
----------------------------- ENTITY VERKLARING ------------------- -------------
entiteit comb_divider is
generieke (DWIDTH: integer: =
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Koel" border="0" />
;
poort (dvdnd_i: in std_logic_vector (DWIDTH-1 Downto 0); - Dividend
dvsor_i: in std_logic_vector (DWIDTH-1 Downto 0); - Divisor
qutnt_o: out std_logic_vector (DWIDTH-1 Downto 0); - Quotient
rmndr_o: out std_logic_vector (DWIDTH-1 Downto 0)); - Rest
einde comb_divider;RTL architectuur van comb_divider is
beginnen - RTL
p_divide: proces (dvdnd_i, dvsor_i)
variabele v_actl_dvdnd: unsigned (DWIDTH-1 Downto 0);
variabele v_dffrnc: unsigned (DWIDTH-1 Downto 0);
variabele v_qutnt: unsigned (DWIDTH-1 Downto 0);
beginnen - proces p_divide
v_actl_dvdnd: = unsigned (dvdnd_i);
for i in DWIDTH-1 Downto 0 lus
indien conv_std_logic_vector (v_actl_dvdnd (DWIDTH-1 Downto i), DWIDTH)> =
dvsor_i dan
- Divisor kunnen worden afgetrokken
v_qutnt (i): = '1 ';
v_dffrnc: = conv_unsigned (v_actl_dvdnd (DWIDTH-1 Downto i), DWIDTH)
- Unsigned (dvsor_i);
if i / = 0 dan
v_actl_dvdnd (DWIDTH-1 Downto i): = v_dffrnc (DWIDTH-1-i Downto 0);
v_actl_dvdnd (i-1): = dvdnd_i (i-1);
end if;
anders
v_qutnt (i): = '0 ';
v_dffrnc: = conv_unsigned (v_actl_dvdnd (DWIDTH-1 Downto i), DWIDTH);
end if;
end loop; - i
rmndr_o <= std_logic_vector (v_dffrnc);
qutnt_o <= std_logic_vector (v_qutnt);
einde proces p_divide;
end RTL;
Verilog CODE als volgt
module comb_divider (
dvdnd_i,
dvsor_i,
qutnt_o,
rmndr_o);
parameter DWIDTH = 8;
input [DWIDTH - 1:0] dvdnd_i;
input [DWIDTH - 1:0] dvsor_i;
output [DWIDTH - 1:0] qutnt_o;
output [DWIDTH - 1:0] rmndr_o;
reg [DWIDTH - 1:0] qutnt_o;
reg [DWIDTH - 1:0] rmndr_o;
reg [DWIDTH - 1:0] p_divide_v_actl_dvdnd;
reg [DWIDTH - 1:0] p_divide_v_dffrnc;
reg [DWIDTH - 1:0] p_divide_v_qutnt;
/ / Proces p_divide
integer V2V_i;altijd @ (dvdnd_i of dvsor_i)
beginnen: p_divide
p_divide_v_actl_dvdnd = dvdnd_i;
voor (V2V_i = DWIDTH - 1; V2V_i> = 0; V2V_i = V2V_i - 1)
beginnen
if (p_divide_v_actl_dvdnd [DWIDTH - 1: V2V_i]> = dvsor_i)
beginnen
p_divide_v_qutnt [V2V_i] = 1'b 1;
p_divide_v_dffrnc = p_divide_v_actl_dvdnd [DWIDTH - 1: V2V_i] - dvsor_i;
if (V2V_i! == 0)
beginnen
p_divide_v_actl_dvdnd [DWIDTH - 1: V2V_i] = p_divide_v_dffrnc [DWIDTH - 1 - V2V_i: 0];
p_divide_v_actl_dvdnd [V2V_i - 1] = dvdnd_i [V2V_i - 1];
eindigen
eindigen
anders
beginnen
p_divide_v_qutnt [V2V_i] = 1'b 0;
p_divide_v_dffrnc = p_divide_v_actl_dvdnd [DWIDTH - 1: V2V_i];
eindigen
eindigen
rmndr_o <= p_divide_v_dffrnc;
qutnt_o <= p_divide_v_qutnt;
eindigen
endmodule / / module comb_divider
De verilog compiler klagen dat het bit breedte moet constant zijn.
Fouten: p_divide_v_actl_dvdnd [DWIDTH - 1: V2V_i] = p_divide_v_dffrnc [DWIDTH - 1 - V2V_i: 0];
Ik probeerde met NCVERILOG en MODELSIM compiler zowel mislukken mij dezelfde problemen, kunt u advies hoe dan ook aan deze conversie probleem op te lossen.
Ik moet deze VHDL-code om te zetten in de Verilog.Ik probeerde het met de online gratis converter software, het eindresultaat nog steeds fouten, kan advies kunt u hier?
VHDL CODE als volgt
library IEEE;
gebruik IEEE.std_logic_1164.all;
gebruik IEEE.std_logic_arith.all;
----------------------------- ENTITY VERKLARING ------------------- -------------
entiteit comb_divider is
generieke (DWIDTH: integer: =
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Koel" border="0" />
;
poort (dvdnd_i: in std_logic_vector (DWIDTH-1 Downto 0); - Dividend
dvsor_i: in std_logic_vector (DWIDTH-1 Downto 0); - Divisor
qutnt_o: out std_logic_vector (DWIDTH-1 Downto 0); - Quotient
rmndr_o: out std_logic_vector (DWIDTH-1 Downto 0)); - Rest
einde comb_divider;RTL architectuur van comb_divider is
beginnen - RTL
p_divide: proces (dvdnd_i, dvsor_i)
variabele v_actl_dvdnd: unsigned (DWIDTH-1 Downto 0);
variabele v_dffrnc: unsigned (DWIDTH-1 Downto 0);
variabele v_qutnt: unsigned (DWIDTH-1 Downto 0);
beginnen - proces p_divide
v_actl_dvdnd: = unsigned (dvdnd_i);
for i in DWIDTH-1 Downto 0 lus
indien conv_std_logic_vector (v_actl_dvdnd (DWIDTH-1 Downto i), DWIDTH)> =
dvsor_i dan
- Divisor kunnen worden afgetrokken
v_qutnt (i): = '1 ';
v_dffrnc: = conv_unsigned (v_actl_dvdnd (DWIDTH-1 Downto i), DWIDTH)
- Unsigned (dvsor_i);
if i / = 0 dan
v_actl_dvdnd (DWIDTH-1 Downto i): = v_dffrnc (DWIDTH-1-i Downto 0);
v_actl_dvdnd (i-1): = dvdnd_i (i-1);
end if;
anders
v_qutnt (i): = '0 ';
v_dffrnc: = conv_unsigned (v_actl_dvdnd (DWIDTH-1 Downto i), DWIDTH);
end if;
end loop; - i
rmndr_o <= std_logic_vector (v_dffrnc);
qutnt_o <= std_logic_vector (v_qutnt);
einde proces p_divide;
end RTL;
Verilog CODE als volgt
module comb_divider (
dvdnd_i,
dvsor_i,
qutnt_o,
rmndr_o);
parameter DWIDTH = 8;
input [DWIDTH - 1:0] dvdnd_i;
input [DWIDTH - 1:0] dvsor_i;
output [DWIDTH - 1:0] qutnt_o;
output [DWIDTH - 1:0] rmndr_o;
reg [DWIDTH - 1:0] qutnt_o;
reg [DWIDTH - 1:0] rmndr_o;
reg [DWIDTH - 1:0] p_divide_v_actl_dvdnd;
reg [DWIDTH - 1:0] p_divide_v_dffrnc;
reg [DWIDTH - 1:0] p_divide_v_qutnt;
/ / Proces p_divide
integer V2V_i;altijd @ (dvdnd_i of dvsor_i)
beginnen: p_divide
p_divide_v_actl_dvdnd = dvdnd_i;
voor (V2V_i = DWIDTH - 1; V2V_i> = 0; V2V_i = V2V_i - 1)
beginnen
if (p_divide_v_actl_dvdnd [DWIDTH - 1: V2V_i]> = dvsor_i)
beginnen
p_divide_v_qutnt [V2V_i] = 1'b 1;
p_divide_v_dffrnc = p_divide_v_actl_dvdnd [DWIDTH - 1: V2V_i] - dvsor_i;
if (V2V_i! == 0)
beginnen
p_divide_v_actl_dvdnd [DWIDTH - 1: V2V_i] = p_divide_v_dffrnc [DWIDTH - 1 - V2V_i: 0];
p_divide_v_actl_dvdnd [V2V_i - 1] = dvdnd_i [V2V_i - 1];
eindigen
eindigen
anders
beginnen
p_divide_v_qutnt [V2V_i] = 1'b 0;
p_divide_v_dffrnc = p_divide_v_actl_dvdnd [DWIDTH - 1: V2V_i];
eindigen
eindigen
rmndr_o <= p_divide_v_dffrnc;
qutnt_o <= p_divide_v_qutnt;
eindigen
endmodule / / module comb_divider
De verilog compiler klagen dat het bit breedte moet constant zijn.
Fouten: p_divide_v_actl_dvdnd [DWIDTH - 1: V2V_i] = p_divide_v_dffrnc [DWIDTH - 1 - V2V_i: 0];
Ik probeerde met NCVERILOG en MODELSIM compiler zowel mislukken mij dezelfde problemen, kunt u advies hoe dan ook aan deze conversie probleem op te lossen.