Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Схема выдающая последовательно номер

Вт ноя 21, 2017 11:13:39

Добрый день, не могу выполнить задание, т.к. только начал изучать VHDL. Требуется построить схему, выдающую в последовательном виде число 10011 по запускающему одиночному импульсу длительностью 1 период тактовой частоты. Я написал код как смог, но компилятор пишет что у меня регистр N(4) не используется. Помогите разобраться, рисунок временных диаграмм прилагаю.
Код
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity lab4 is
Port ( CLK : in STD_LOGIC;
CE, SRST : in STD_LOGIC;
Q: out STD_LOGIC_VECTOR(4 downto 0));
end lab4;

architecture rtl of lab4 is
signal N: STD_LOGIC_VECTOR(4 downto 0);
begin

process(CLK) begin
if rising_edge(CLK) then
if SRST = '1' then
N <= (others => '0');
elsif CE = '1' then
if N = "11001" then
N <= (others => '0');
else
N(0) <= '1';
N <= N(4 downto 1)& N(0);
end if;
end if;
end if;
Q <= N;
end process;
end rtl;
Вложения
mdDafpLqNjE.jpg
(127.55 KiB) Скачиваний: 442

Re: Схема выдающая последовательно номер

Вт ноя 21, 2017 16:21:19

Код:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;


entity lab4 is
Port ( CLK : in STD_LOGIC;
          CE, SRST : in STD_LOGIC;
          Q: out STD_LOGIC);
end lab4;

architecture rtl of lab4 is
signal N: STD_LOGIC_VECTOR(4 downto 0);
signal i: integer range 0 to 5;
begin


process(CLK) begin
  if rising_edge(CLK) then
    if SRST = '1' then
        i<=5;
        N<="10011";
        Q<='0';
    else
      if CE = '1' then
        i<=0;
      end if;
      if i=5 then
        Q<='0';
      else
        i<=i+1;
        Q<=N(i);
      end if;
    end if;
  end if;
end process;
end rtl;

Изображение

Так?

Re: Схема выдающая последовательно номер

Вт ноя 21, 2017 23:59:30

Благодарю за ответ, это то что нужно

Добавлено after 21 minute 16 seconds:
Уважаемый kolpakchi, могли бы вы скинуть test bench к данному модулю ???

Re: Схема выдающая последовательно номер

Ср ноя 22, 2017 15:56:25

Все что до Stimulus process сгенерил ise.
Код:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
 
 
ENTITY lab_test IS
END lab_test;
 
ARCHITECTURE behavior OF lab_test IS
 
    COMPONENT lab4
    PORT(
         CLK : IN  std_logic;
         CE : IN  std_logic;
         SRST : IN  std_logic;
         Q : OUT  std_logic
        );
    END COMPONENT;
   

   --Inputs
   signal CLK : std_logic := '0';
   signal CE : std_logic := '0';
   signal SRST : std_logic := '1';

    --Outputs
   signal Q : std_logic;

   -- Clock period definitions
   constant CLK_period : time := 10 ns;
 
BEGIN
 
   -- Instantiate the Unit Under Test (UUT)
   uut: lab4 PORT MAP (
          CLK => CLK,
          CE => CE,
          SRST => SRST,
          Q => Q
        );

   -- Clock process definitions
   CLK_process :process
   begin
      CLK <= '0';
      wait for CLK_period/2;
      CLK <= '1';
      wait for CLK_period/2;
   end process;
 

   -- Stimulus process
   stim_proc: process
   begin      
      -- hold reset state for 100 ns.
      wait for 100 ns;   
      srst<='0';
      wait for CLK_period*10;
      wait until rising_edge(clk);
      wait until rising_edge(clk);
      wait until rising_edge(clk);
      wait until rising_edge(clk);
      wait until rising_edge(clk);
      wait until rising_edge(clk);
      ce<='1';
      wait until rising_edge(clk);
      ce<='0';
      wait until rising_edge(clk);
      wait until rising_edge(clk);
      wait until rising_edge(clk);
      wait until rising_edge(clk);
      wait until rising_edge(clk);
      wait until rising_edge(clk);
      wait until rising_edge(clk);
      ce<='1';
      wait until rising_edge(clk);
      ce<='0';
      wait until rising_edge(clk);
      -- insert stimulus here

      wait;
   end process;

END;

Re: Схема выдающая последовательно номер

Ср ноя 22, 2017 21:15:04

Спасибо за помощь! :)
Ответить