No puedo encontrar el error de sintaxis en mi iverilog {design.sv:1: error de sintaxis. Me rindo.}
biblioteca ieee;
uso ieee.std_logic_1164.all;
uso ieee.numeric_std.all;
entidad sqwaveGen es
puerto (
clk : in std_logic;
clk_out : out std_logic;
fall : in unsigned(7 downto 0);
reset : in std_logic;
rise : in unsigned(7 downto 0)
);
fin entidad;
arquitectura from_verilog de sqwaveGen es
señal count : unsigned(7 downto 0); — Declarado en design.sv:7
señal count_off : unsigned(7 downto 0); — Declarado en design.sv:7
señal count_on : unsigned(7 downto 0); — Declarado en design.sv:7
señal pos_or_neg : std_logic; — Declarado en design.sv:8
begin
clk_out <= pos_or_neg;
proceso (clk, reset) es
begin
si (no reset) = ‘1’ entonces
count <= X”00″;
count <= X”00″;
pos_or_neg <= ‘1’;
elsif rising_edge(clk) entonces
si (unsigned'(“0000000000000000000000000000000″) and pos_or_neg) = X”00000001” entonces
si Resize(count, 32) = (Resize(count_on, 32) - X"00000001") entonces
count <= X"00";
pos_or_neg <= '0';
else
count <= count + X"01";
fin si;
else
si (unsigned'("0000000000000000000000000000000") and pos_or_neg) = X"00000000" entonces
si Resize(count, 32) = (Resize(count_off, 32) - X"00000001") entonces
count <= X"00";
pos_or_neg <= '1';
else
count <= count + X"01";
fin si;
fin si;
fin si;
fin si;
end proceso;
proceso (fall, rise) es
begin
count_on <= rise;
count_off <= fall;
end proceso;
end architecture;
davy.ai
Explicación del código VHDL para el generador de ondas cuadradas
El código VHDL proporcionado define una entidad llamada “sqwaveGen” que tiene cinco puertos de entrada/salida para la entrada de reloj, salida de reloj, conteo de flanco descendente, señal de reinicio y conteo de flanco ascendente.
La arquitectura de la entidad se define como “from_verilog”, que contiene varias señales, incluyendo tres señales para contadores, una señal para determinar la polaridad de la señal de salida y una señal de salida de reloj.
El comportamiento de la entidad se define a través de dos procesos. El primer proceso es sensible a las señales de reloj y reinicio, y es responsable de alternar la señal de salida en función de los conteos de flanco ascendente/descendente y el estado actual de la señal de polaridad. El segundo proceso es sensible a las entradas de conteo de flanco ascendente/descendente y establece los valores de conteo encendido/apagado en consecuencia.
En general, el código VHDL genera una señal de onda cuadrada con conteos de flanco ascendente/descendente ajustables basados en los valores de entrada para rise y fall.