реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Видеопамять для 7-сегментного индикатора на Spartan-3 Starter Kit., Кто-нибудь реализовывал?
lexus.mephi
сообщение Nov 25 2006, 18:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 24-09-05
Пользователь №: 8 903



Как выснилось, однократной подачи сигнлаов для вывода на индикацию недостаточно, т.ч. необходима видеопамять. Кто-нибудь ее реализовывал?
Есть, конечно, одна задумка с использованием двухпортовой памяти, вот только для нее нужно уменьшать частоту клока! Получается немного напряжно.


--------------------
Мои сайты:www.systemverilog.ru
Go to the top of the page
 
+Quote Post
makc
сообщение Nov 25 2006, 19:25
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Неужели для семисегментного индикатора недостаточно обыкновенного семирязрядного регистра? blink.gif
Причем здесь видеопамять?


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Hardman
сообщение Nov 25 2006, 20:39
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 24-02-06
Пользователь №: 14 643



Цитата(lexus.mephi @ Nov 25 2006, 18:02) *
Как выснилось, однократной подачи сигнлаов для вывода на индикацию недостаточно, т.ч. необходима видеопамять. Кто-нибудь ее реализовывал?
Есть, конечно, одна задумка с использованием двухпортовой памяти, вот только для нее нужно уменьшать частоту клока! Получается немного напряжно.

signal HEX: std_logic_vector (3 downto 0);

LED: process(HEX,SEL,CLK1)
begin
if SEL='1' then
case HEX is
when "0000" => LDR <= "0000001";-- 0
when "0001" => LDR <= "1001111";-- 1
when "0010" => LDR <= "0010010";-- 2
when "0011" => LDR <= "0000110";-- 3
when "0100" => LDR <= "1001100";-- 4
when "0101" => LDR <= "0100100";-- 5
when "0110" => LDR <= "0100000";-- 6
when "0111" => LDR <= "0001111";-- 7
when "1000" => LDR <= "0000000";-- 8
when "1001" => LDR <= "0000100";-- 9
when "1010" => LDR <= "0001000";-- A
when "1011" => LDR <= "1100000";-- B
when "1100" => LDR <= "0110001";-- C
when "1101" => LDR <= "1000010";-- D
when "1110" => LDR <= "0110000";-- E
when "1111" => LDR <= "0111000";-- F
when others => LDR <= "1111111";
end case;
else
case CLK1 is
when '0' => LDR <= "1110001";-- L
when '1' => LDR <= "0110001";-- C
when others => LDR <= "0000000";
end case;
end if;
end process LED;


4 бита в дешифратор память не нужна.
Go to the top of the page
 
+Quote Post
lexus.mephi
сообщение Nov 26 2006, 10:58
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 24-09-05
Пользователь №: 8 903



Понимаете, мне нужно чтобы в каждой из 4 позиций индикатора были разные числа! Для этого мне нужно выводить их поочередно, но делать это нужно динамически, т.е. постоянно обновлять! Или будет видно только последнее выведенное знакоместо. И одним регистром здесь не обойдешся. А подобный дешифратор я и сам написал, но этого не достаточно! Ладно, че-нить придумаем =)


--------------------
Мои сайты:www.systemverilog.ru
Go to the top of the page
 
+Quote Post
makc
сообщение Nov 26 2006, 11:23
Сообщение #5


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Можно же поставить поставить четыре регистра?


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Hardman
сообщение Nov 26 2006, 13:57
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 24-02-06
Пользователь №: 14 643



Это и есть динамическая
DAT: process (CLK1, DATA)
begin
case CLK1 is
when '00' => HEX <= DATA (3 downto 0);
when '01' => HEX <= DATA (7 downto 4);
when '10' => HEX <= DATA (11 downto 8);
when '11' => HEX <= DATA (15 downto 12);
when others => HEX <= "0000";
end case;
end process DAT;

a CLK1 и будет выбираться индикатор на котором надо цифру зажечь.
Go to the top of the page
 
+Quote Post
Prusak
сообщение Nov 27 2006, 16:05
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 11-08-06
Из: Москва
Пользователь №: 19 488



Цитата(lexus.mephi @ Nov 26 2006, 10:58) *
Понимаете, мне нужно чтобы в каждой из 4 позиций индикатора были разные числа! Для этого мне нужно выводить их поочередно, но делать это нужно динамически, т.е. постоянно обновлять! Или будет видно только последнее выведенное знакоместо. И одним регистром здесь не обойдешся. А подобный дешифратор я и сам написал, но этого не достаточно! Ладно, че-нить придумаем =)
В тестовых проектах, прилагающихся к плате есть очень наглядный пример по этому вопросу. Смотрите здесь: http://www.xilinx.com/products/boards/DO-S...nce_designs.htm . Проект называется Digital Clock using Multiplexed 7-Segment Display.
Go to the top of the page
 
+Quote Post
lexus.mephi
сообщение Dec 22 2006, 19:17
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 24-09-05
Пользователь №: 8 903



Сделал все как в примере Xilinx и все корректно ввыводится кроме первого знакоместа! Не могу понять в чем глюк.


--------------------
Мои сайты:www.systemverilog.ru
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 14th July 2025 - 09:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016