Счетчики на VHDL
Счетчики на VHDL - один из возможных поисковых запросов. VHDL счетчики присутствуют в любой IDE для ПЛИС в разделе шаблонов. И тем не менее, поскольку все же народ ищет VHDL код счетчиков то вполне можно рассмотреть варианты альтернативные шаблонным. В данном посте попробуем сворганить VHDL делитель, счетчик с запуском и остановом, делитель с бездребезговым переносом.
Начнем с простого делителя, который может поделить частоту так, чтобы сразу получился меандр. Это вполне может пригодиться для формирования частоты бод для USART.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity clock is
generic
(
clk_gen : integer := 5000000; -- частота генератора
baud_rate : integer := 19200; -- необходимая частота бод
baud_mul : integer := 16 -- множитель частоты бод
);
port
(
clk : in std_logic; -- вход частоты
rst : in std_logic; -- внешний сброс
clk_out : out std_logic -- выход частоты
);
end clock;
architecture Behavioral of clock is
-- начальное состояние счета
constant min_count : integer := 0;
-- определение полупериода частоты бод
constant max_count : integer := (((clk_gen / baud_rate)/(2*baud_mul)) - 1);
-- частота бод
signal bclk : std_logic;
begin
-- если счетчик досчитал до max_count
-- то bclk меняет свое состояние (частота бод)
process(clk,bclk,rst)
variable cnt : integer range min_count to max_count;
begin
if rst = '1' then
bclk <= '0';
cnt := 0;
elsif clk'event and clk = '1' then
if cnt = max_count then
cnt := 0;
if bclk = '1' then bclk <= '0';
else bclk <= '1';
end if;
else
cnt := cnt + 1;
end if;
end if;
clk_out <= bclk;
end process;
end Behavioral;
Втрой вариант VHDL счетчика это счетчик с запуском и остановом.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity reset is
generic
(
min_count : integer := 0 -- начальное состояние счета
);
port
(
clk : in std_logic; -- вход частоты
rst_out : out std_logic -- сброс
);
end reset;
architecture Behavioral of reset is
-- внутренний сброс
signal rclk : std_logic := '0';
-- сигнал блокировки сброса (1 раз после вкл. питания)
signal rblock : std_logic := '0';
begin
process(clk,rclk)
variable rcnt : integer range min_count to 8;
begin
if clk'event and clk = '1' then
if rblock = '0' then
rcnt := rcnt + 1;
rclk <= '1';
end if;
if rcnt = 8 then
rclk <= '0';
rblock <= '1';
end if;
end if;
rst_out <= rclk;
end process;
end Behavioral;
Третий вариант VHDL счетчика это делитель с бездребезговым переносом.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity tinkle is
Generic
(
count_int : integer := 20
);
Port(
clk : in std_logic;
load : in std_logic;
rs_out : out std_logic;
centr_out : out std_logic_vector(7 downto 0)
);
end tinkle;
architecture Behavioral of tinkle is
signal rs : std_logic;
signal count : std_logic_vector(7 downto 0);
begin
-- счетчик с бездребезговым переносом
process(clk,rs,load,count)
begin
if load = '1' then
count <= (others => '0');
elsif clk'event and clk = '1' then
if rs = '0' then
count <= (others => '0');
else
count <= count + 1;
end if;
if count = conv_integer(count_int) then
rs <= '0';
else
rs <= '1';
end if;
centr_out <= count;
end if;
rs_out <= rs;
end process;
end Behavioral;
Собственно проект VHDL счетчики под ISE13.1.и литература по VHDL Verilog.
Подскажите пожалуйста как сделать так на VHDL, чтобы счетчик выдал пилообразный сигнал?... Очень нужен данный код, спасибо.
2013 12 10 11:16:42 Добавил:
2013 12 10 05:35:03 Добавил:
Всего комментариев: 2
Электроника :
- Техника электроника (11)
- Полезная электроника (4)
- Электроника для всех (5)
- Техника для дома (6)
- Cхемотехника ПЛИС (11)
- Пректирование PCAD (4)
Программирование :
- Микроконтроллеры (9)
- ПЛИС VHDL Verilog (29)
- C++ Builder (7)
- Visual Studio C++ C# (7)
- Java programming (7)
- Matlab programming (4)
Сайтостроение :
- Сайтостроение HTML (5)
- Сайтостроение PHP (8)
- PHP CMS на файлах (3)
- Web инструменты (9)
- Полезное вебмастеру (11)
- SEO раскрутка сайта (4)
- PHP скрипты (3)
Реклама :
Книги и учебники :
- Шаблоны сайтов (6)
- Книги и учебники (2)
Компьютер и интернет :
Поиск по сайту :
Реклама :
Облако меток :
Бесплатная подписка :
Статистика :
- Популярность (3)
- Посещаемость (3)
- Поисковые запросы (3)