Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программируемая логика: ПЛИС, ПАИС
Войти
Регистрация
Восстановить пароль
 
Desolar
0 / 0 / 0
Регистрация: 06.11.2017
Сообщений: 61
1

D-триггер с использованием Case Statement

13.04.2019, 02:00. Просмотров 162. Ответов 0
Метки нет (Все метки)

Здравствуйте, попробовал переписать обычный код для триггера используя кейсы, но ничего не получилось, второе утверждение в симуляции Active HDL не работает. Что нужно изменить?

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

entity D_FF_VHDL is
   port
   (
      clk : in std_logic;

      rst : in std_logic;
      pre : in std_logic;
      ce  : in std_logic;
      
      d : in std_logic;

      q : out std_logic
   );
end entity D_FF_VHDL;
 
architecture Behavioral of D_FF_VHDL is

begin
   process (clk) is
   begin
      if rising_edge(clk) then  
         if (rst='1') then   
            q <= '0';
         elsif (pre='1') then
            q <= '1';
         elsif (ce='1') then
            if (d ='1') then
             q <= '1';
         elsif (d ='0') then 
             q<= '0';
            end if;
         end if;
      end if;
   end process;
end architecture Behavioral;
Код
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Dflip is
   port
   (
      clk : in std_logic;

      rst : in std_logic;
      pre : in std_logic;
     
      
      d : in std_logic;

      q : out std_logic
   );
end entity Dflip;
 
architecture Behavioral of Dflip is

   type StateType is (ST0,ST1);
   signal Current_State:StateType;
   begin		  
	   process (clk) is 
	   begin
	 
           if rising_edge(clk) then
	   case Current_State is
	   
	   when ST0 => 
	   if rst='1' then
	    q <= '0'; 
		elsif (pre='1') then
            q <= '1';
	   end if;	 
	   
	   when ST1 =>  
	   if (d ='1') then
             q <= '1';
         elsif (d ='0') then 
             q<= '0';
            end if;                     
                                       
       when others => null;             
       end case;                            
        end if;                           
  end process;                                        
  end architecture Behavioral;
Добавлено через 2 часа 52 минуты
Как-то сам разобрался, но теперь интересно почему выходной сигнал на начале undefined.
Код
 												  												 																										  
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;


entity Dflopcase is
    Port ( clk : in std_logic;
	       rst : in std_logic;
           set : in std_logic;
           d : in std_logic;
		   q : out std_logic
 );       
end Dflopcase;

architecture Behavioral of Dflopcase is

signal rs : std_logic_vector(1 downto 0);
signal state : std_logic ;

begin
 rs <= rst & set; 
 process(clk)
 begin		   
  if rising_edge(clk) then 
  case(rs)is
   when "00" => 
   if (d ='1') then
             state <= '1';
         elsif (d ='0') then 
             state<= '0';
            end if;
   when "01" => state <= '1';
   when "10" => state <= '0';
   
   when others => state <= 'X';
  end case;	 
  end if;
 end process;
 q <= state;
  
end Behavioral;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2019, 02:00
Ответы с готовыми решениями:

Т-Триггер на ИЛИ-НЕ элементах и что это за триггер?
Здравствуйте. Нужно построить схему Т-Триггера через ИЛИ-НЕ элементы. Вот сам триггер...

UPDATE CASE statement
UPDATE statuses SET status = CASE document_id when '12345' then '2' end тип...

Нюансы синтаксиса: как работают выражения вида statement = statement = statement?
Всем привет. Что значит такое выражение в c++? c = c2 = c/2; и как вообще работают такие...

Ошибка: "case label not within a switch statement"
Здравствуйте, работая с оператором switch произошла ошибка case label '1' not within a switch...

Namespace declaration statement has to be the very first statement in the script
Здравствуйте! У меня такая проблема: Запускаю свой проект. Пишет: &quot;Namespace declaration statement...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2019, 02:00

C использованием case
Напишите программу вычисления стоимости междугороднего телефонного разговора. Стоимость разговора...

Запрос с использованием CASE
Доброго времени суток. Мучаюсь с запросом, суть которого: Определить названия всех кораблей из...

структура с использованием swetch case
Дана структура - книги. Поля - название книги, спрос за месяц, количество. Вывести на экран 3...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru