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

Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить
Dimson12
Родился
Сообщения: 15
Зарегистрирован: Вт ноя 21, 2017 10:57:09

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

Сообщение Dimson12 »

Добрый день, не могу выполнить задание, т.к. только начал изучать 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 КБ) 486 скачиваний
Реклама
Аватара пользователя
kolpakchi
Родился
Сообщения: 6
Зарегистрирован: Вт сен 06, 2016 10:36:15

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

Сообщение kolpakchi »

Код: Выделить всё

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;
Изображение

Так?
Реклама
Dimson12
Родился
Сообщения: 15
Зарегистрирован: Вт ноя 21, 2017 10:57:09

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

Сообщение Dimson12 »

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

Добавлено after 21 minute 16 seconds:
Уважаемый kolpakchi, могли бы вы скинуть test bench к данному модулю ???
Аватара пользователя
kolpakchi
Родился
Сообщения: 6
Зарегистрирован: Вт сен 06, 2016 10:36:15

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

Сообщение kolpakchi »

Все что до 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;
Реклама
Эиком - электронные компоненты и радиодетали
Dimson12
Родился
Сообщения: 15
Зарегистрирован: Вт ноя 21, 2017 10:57:09

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

Сообщение Dimson12 »

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

Вернуться в «ПЛИС»