|
Модуль RTC. |
|
|
|
Sep 4 2017, 11:44
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Сделал модуль RTC Код entity RTC is port( RST : in Std_logic; CLK : in Std_logic; SECONDS : out Std_logic_vector(5 downto 0); MINUTES : out Std_logic_vector(5 downto 0); HOURS : out Std_logic_vector(4 downto 0); DAY : out Std_logic_vector(5 downto 0); MONTH : out Std_logic_vector(3 downto 0); YEAR : out Std_logic_vector(11 downto 0) ); end RTC; и вычисляю часы, минуты, дни и так далее. Но модуль надо инициализировать реальным временем. Получается надо сделать что то вроде такого Код entity RTC is port( RST : in Std_logic; CLK : in Std_logic; SECONDS_IN : in Std_logic_vector(5 downto 0); MINUTES_IN : in Std_logic_vector(5 downto 0); HOURS_IN : in Std_logic_vector(4 downto 0); DAY_IN : in Std_logic_vector(5 downto 0); MONTH_IN : in Std_logic_vector(3 downto 0); YEAR_IN : in Std_logic_vector(11 downto 0);
SET : in Std_logic;
SECONDS_OUT : out Std_logic_vector(5 downto 0); MINUTES_OUT : out Std_logic_vector(5 downto 0); HOURS_OUT : out Std_logic_vector(4 downto 0); DAY_OUT : out Std_logic_vector(5 downto 0); MONTH_OUT : out Std_logic_vector(3 downto 0); YEAR_OUT : out Std_logic_vector(11 downto 0) ); end RTC; набор для ввода и набор для вывода. А по другому никак?
Сообщение отредактировал Jenya7 - Sep 4 2017, 11:47
|
|
|
|
|
 |
Ответов
|
Sep 8 2017, 10:41
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(_Anatoliy @ Sep 5 2017, 15:46)  Ну да, так и делаю когда имею дело с шиной данных в блоках DSP. Но для банального счётчика считаю это лишним. А я вообще счетчики в отдельных модулях держу. Один раз описал его, отладил и больше к нему не возвращаюсь. Только в параметрах указываю значение максимального счета. Лично я так меньше ошибаюсь при написании проектов CODE Код LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.NUMERIC_STD.ALL;
ENTITY COUNTER_ENA IS GENERIC ( MAX_VALUE : INTEGER := 126 -- До скольки считает счетчик(от нуля до MAX_VALUE) ); PORT ( CLK : IN STD_LOGIC; ENA : IN STD_LOGIC; DATA_OUT : OUT INTEGER RANGE 0 TO MAX_VALUE ); END ENTITY;
ARCHITECTURE RTL OF COUNTER_ENA IS FUNCTION LOG2 (MAX_VALUE : INTEGER) RETURN INTEGER IS -- Функция вычесления логарифма по основанию 2 для определения разрядности VARIABLE CNT : INTEGER := 0; -- Счетчик для подсчета количества делений на 2 VARIABLE TEMP : INTEGER := MAX_VALUE + 1; -- Делимое - максимальное количество состояний счетчика BEGIN WHILE (TEMP > 1) LOOP -- Пока делимое больше 1 совершаем цикл деления на 2 CNT := CNT + 1; -- Считаем количество циклов деления TEMP := TEMP/2; -- Делим число на 2 каждый цикл END LOOP; RETURN CNT; -- Значение счетчика и есть логарифм END LOG2; SIGNAL COUNTER_INTEGER : INTEGER RANGE 0 TO MAX_VALUE := 0; -- Счетчик обнуляемый условием максимального счета SIGNAL COUNTER_UNSIGNED : UNSIGNED(LOG2(MAX_VALUE)-1 DOWNTO 0) := (OTHERS => '0'); -- Счетчик с автоматическом обнулени при переполнении BEGIN
--================================================================================ ========================== -- Если максимальное значение счетчика переведенное в двоичное число не состоит из одних только единиц -- Значит у нас счетчик обнуляется значением максимального счета т.е до наступления переполнения разрядов --================================================================================ ========================== GEN_RST_COND : IF ( TO_UNSIGNED(MAX_VALUE,LOG2(MAX_VALUE) ) /= ( LOG2(MAX_VALUE)-1 DOWNTO 0 => '1' ) ) GENERATE CNT_PROC : PROCESS ( CLK ) BEGIN IF (RISING_EDGE(CLK)) THEN IF (ENA = '1') THEN -- Сигнал разрешения работы счетчика IF (COUNTER_INTEGER = MAX_VALUE) THEN -- При наступлении максимального значения счетчика COUNTER_INTEGER <= 0; -- Обнулим его ELSE COUNTER_INTEGER <= COUNTER_INTEGER + 1; -- Иначе будем его инкрементировать END IF; END IF; END IF; END PROCESS; DATA_OUT <= COUNTER_INTEGER; END GENERATE; --================================================================================ ========================== -- Если максимальное значение счетчика это (2**N - 1) -- Значит у нас полный счетчик, который обнуляется переполнением разрядов --================================================================================ ========================== GEN : FOR I IN 0 TO 30 GENERATE OVERFLOW : IF (2**I-1 = MAX_VALUE) GENERATE CNT_PROC : PROCESS ( CLK ) BEGIN IF (RISING_EDGE(CLK)) THEN IF (ENA = '1') THEN -- Сигнал разрешения работы счетчика COUNTER_UNSIGNED <= COUNTER_UNSIGNED + "1"; -- Инкрементируем его каждый такт END IF; END IF; END PROCESS; DATA_OUT <= TO_INTEGER(COUNTER_UNSIGNED); END GENERATE; END GENERATE; END ARCHITECTURE;
|
|
|
|
Сообщений в этой теме
Jenya7 Модуль RTC. Sep 4 2017, 11:44 Flip-fl0p Цитата(Jenya7 @ Sep 4 2017, 14:44) Сделал... Sep 4 2017, 11:53 Jenya7 Цитата(Flip-fl0p @ Sep 4 2017, 16:53... Sep 4 2017, 11:57  Flip-fl0p Цитата(Jenya7 @ Sep 4 2017, 14:57) послед... Sep 4 2017, 12:02   Jenya7 Цитата(Flip-fl0p @ Sep 4 2017, 17:02... Sep 4 2017, 12:04 Tausinov Цитата(Jenya7 @ Sep 4 2017, 14:44) Сделал... Sep 4 2017, 12:42 Jenya7 Цитата(Tausinov @ Sep 4 2017, 17:42) Спос... Sep 4 2017, 13:27  Maverick Цитата(Jenya7 @ Sep 4 2017, 16:27) хотело... Sep 4 2017, 14:01   Jenya7 Цитата(Maverick @ Sep 4 2017, 19:01) чем ... Sep 4 2017, 14:10    Inanity Цитата(Jenya7 @ Sep 4 2017, 17:10) железо... Sep 4 2017, 14:43     Jenya7 Цитата(Inanity @ Sep 4 2017, 19:43) Будьт... Sep 4 2017, 14:51      Tausinov Цитата(Jenya7 @ Sep 4 2017, 17:51) Кодfun... Sep 4 2017, 15:19       Jenya7 Цитата(Tausinov @ Sep 4 2017, 20:19) Возь... Sep 4 2017, 15:29        Tausinov Цитата(Jenya7 @ Sep 4 2017, 18:29) так то... Sep 4 2017, 15:31         Jenya7 Цитата(Tausinov @ Sep 4 2017, 20:31) Ага,... Sep 4 2017, 15:42          Flip-fl0p Кодuse IEEE.STD_LOGIC_UNSIGNED.ALL;
Уберите её, он... Sep 4 2017, 16:41           _Anatoliy Цитата(Flip-fl0p @ Sep 4 2017, 19:41... Sep 5 2017, 08:20            Flip-fl0p Так а вы счетчик объявите как тип UNSIGNED и тогда... Sep 5 2017, 08:43             _Anatoliy Цитата(Flip-fl0p @ Sep 5 2017, 11:43... Sep 5 2017, 08:50              Flip-fl0p Цитата(_Anatoliy @ Sep 5 2017, 11:50) В т... Sep 5 2017, 09:03               _Anatoliy Цитата(Flip-fl0p @ Sep 5 2017, 12:03... Sep 5 2017, 09:25                Flip-fl0p Цитата(_Anatoliy @ Sep 5 2017, 12:25)
То... Sep 5 2017, 09:42             andrew_b Цитата(Flip-fl0p @ Sep 5 2017, 11:43... Sep 5 2017, 09:55              _Anatoliy Цитата(andrew_b @ Sep 5 2017, 12:55) Когд... Sep 5 2017, 10:00              Flip-fl0p Цитата(andrew_b @ Sep 5 2017, 12:55) Когд... Sep 5 2017, 10:12          andrew_b Цитата(Jenya7 @ Sep 4 2017, 18:42) Код... Sep 5 2017, 05:26           Jenya7 Цитата(andrew_b @ Sep 5 2017, 11:26) Хоте... Sep 5 2017, 06:21
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|