Pequeño experimento

Ejercicios integrales VHDL
Uno, el propósito del experimento

  1. Dominar los métodos básicos de programación de VHDL;
  2. Domine el diseño VHDL de algunos circuitos comunes;
  3. Revise la compilación del diseño de Quartus II y la verificación de la simulación.
    2. Requisitos experimentales
  4. Completa el diseño del contador decimal con lenguaje VHDL.
  5. El diseño de un divisor de 10 frecuencias con un ciclo de trabajo del 50% se completa en lenguaje VHDL.
  6. Utilice el lenguaje VHDL para completar el diseño del decodificador de pantalla que maneja el tubo digital de cátodo común.
  7. Compile y simule en la plataforma de software Quartus II.
    3. Instrumento y equipo principal
    Computadora, plataforma de software Quartus Ⅱ
    4. Contenido del experimento 1.
    Programa de contador decimal
    (1) Texto de entrada:
    biblioteca ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;

la entidad cnt10 es el
puerto (
clk: in std_logic;
en: out std_logic;
y: out integer range 0 a 10);
end cnt10;
la arquitectura a de cnt10 es la
señal q_temp: intervalo de números enteros de 0 a 10;
begin
process (clk)
begin
if (clk'event and clk = '1') then
if
q_temp = 9 then
en <= '1';
q_temp <= 0;

	else
		 q_temp <= q_temp+1;
		 en <= '0';
      
	end if;
end if;

y <= q_temp;
proceso finalizado;
end a ;;
(2) 仿真

2.10 Programa divisor de frecuencia
(1) Texto de entrada:
Biblioteca ieee;
Utilice ieee.std_logic_1164.all;
Utilice ieee.std_logic_unsigned.all;
Utilice ieee.std_logic_arith.all;

La entidad fdiv es
genérica (N: integer: = 10); --rate = N, baiN 是 是
puerto (
clkin: IN std_logic;
clkout: OUT std_logic
);
End fdiv;
La arquitectura a de fdiv es la
señal cnt: intervalo de números enteros de 0 a n-1;
Comenzar
proceso (clkin) - 计数
begin
if (clkin'event and clkin = '1') then
if (cnt <n-1) then
cnt <= cnt + 1;
más
cnt <= 0;
terminara si;
terminara si;
proceso finalizado;

process (cnt) - Controla los niveles alto y bajo del pulso de reloj de salida de acuerdo con el valor del contador du.
begin
if (cnt <n / 2) then
clkout <= '1';
else
clkout <= '0';
end if;
proceso finalizado;

Finalizar una;
(2) Simulación

3. 显示 译码 器 程序
(1) 输入 文本 :
Biblioteca ieee;
Utilice ieee.std_logic_1164.all;
La entidad QELED7 es
PORT (DATOS: IN STD_LOGIC_VECTOR (3 DOWNTO 0);
a, b, c, d, e, f, g: out std_logic);
end QELED7;
El LED de arquitectura de QELED7 es la
señal y: STD_LOGIC_VECTOR (6 DOWNTO 0);
comenzar
proceso (DATOS)
comenzar
caso DATOS es
cuando “0000” => y <= “1111110”;
cuando “0001” => y <= “0110000”;
cuando "0010" => y <= "1101101";
cuando "0011" => y <= "1111001";
cuando "0100" => y <= "0110011";
cuando "0101" => y <= "1011011";
cuando "0110" => y <= "1011111";
cuando "0111" => y <= "1110000";
cuando "1000" => y <= "1111111";
cuando "1001" => y <= "1111011";
cuando otros => nulo;
caso final;
a <= y (6); b <= y (5); c <= y (4);
d <= y (3); e <= y (2); f <= y (1); g <= y (0);
proceso finalizado;
final;
(2) 仿真

5. Resultados experimentales y análisis
(1) Contador decimal
Cuando llega el flanco ascendente del reloj, el conteo aumenta en uno. Cuando el conteo es 9 (0111), el contador se borra cuando llega el próximo flanco ascendente del reloj y se genera una señal de acarreo del ciclo del reloj.

(2) Un divisor de 10 frecuencias con un ciclo de trabajo del 50%
. Como se muestra en la figura, los resultados experimentales son correctos. Configure un contador de 5 arios. Cuando está lleno, la señal de salida se invierte, es decir, el ciclo de salida se realiza una vez cada 10 ciclos. Señal, para lograr un divisor de 10 con un ciclo de trabajo del 50%.

3) Descodificador de pantalla que conduce un tubo digital de cátodo común

El cátodo común está funcionando a un nivel alto, por lo que cuando es 0, todo es de nivel alto excepto por g. Puede mostrar 0 y
otros números se pueden deducir por analogía. La imagen muestra que los resultados de mi experimento son correctos.

Supongo que te gusta

Origin blog.csdn.net/weixin_45706856/article/details/106608454
Recomendado
Clasificación