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

 
 
 
Reply to this topicStart new topic
> СoolRunner-II XC2C256, Деление частоты программно
x66
сообщение Jun 9 2010, 12:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



имеется vhdl код
library ieee;
Library UNISIM;
use UNISIM.vcomponents.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity counter4 is
port (rst : in std_logic;
clk : in std_ulogic;
count : out std_logic_vector (3 downto 0);
CLKDV16, CLKDV256 : inout std_ulogic);
end counter4;

architecture behav of counter4 is
signal cnt: std_logic_vector (3 downto 0);
begin
CLK_DIV16_inst : CLK_DIV16
port map (
CLKDV => CLKDV16, -- Divided clock output
CLKIN => clk -- Clock input
);
CLK_DIV16_instt : CLK_DIV16
port map (
CLKDV => CLKDV256, -- Divided clock output
CLKIN => CLKDV16 -- Clock input
);

process (CLKDV256, cnt, rst)
begin
if (rst = '1') then
cnt <= (others => '0');
elsif (CLKDV256'event and CLKDV256 = '1') then
cnt <= cnt + '1';
end if;
end process;
count <= cnt;
end behav;



Ошибок не выдает, но проблема возникает при создании .jed файла, не хочет приписывать ножки. В симуляторе программа работает нормально. Если кто знает в чем проблема просьба помочь.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Jun 9 2010, 12:35
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(x66 @ Jun 9 2010, 16:24) *
Ошибок не выдает, но проблема возникает при создании .jed файла, не хочет приписывать ножки. В симуляторе программа работает нормально. Если кто знает в чем проблема просьба помочь.

Я конечно не силен в Vhdl, но меня смущает запись CLKDV16, CLKDV256 : inout std_ulogic
В верилоге подобная хрень работать бы не стала в таком виде (там специальные пины и обвязка потребовалась бы), эти две частоты обычными выходами быть не могут? Ну может я просто синтаксис подзабыл smile.gif

Сообщение отредактировал bogaev_roman - Jun 9 2010, 12:36
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jun 9 2010, 12:41
Сообщение #3


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Можно использовать например обычный счетчик.
В чем проблема? Для чего нужна программное изменение частоты? Предъявляемые требования?
Почитайте данный документ, может он даст Вам ответ
Дополнительно можете посмотреть здесь
Здесь уже поднимался подобный вопрос
PS По приведенному описанию сложно что-либо сказать...


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
x66
сообщение Jun 9 2010, 13:00
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Дело в том что в программе пытаемся реализовать 4 битный счетчик, для этого используется 4 светодиода, которые есть на отладочной плате. Чтобы разглядеть то что ведется счет на диодах, необходима маленькая частота, иначе диоды просто горят. Поэтому решили программно уменьшить частоту делением на 16, для этого был взят шаблон с vhdl кодом. С этим шаблоном в симуляторе все работает отлично но в саму плиску залить прошивку не получается. Если есть другие способы уменьшения частоты то объясните пожалуйста, но желательно на основе этой проги сделать.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Jun 9 2010, 13:09
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(x66 @ Jun 9 2010, 17:00) *
Дело в том что в программе пытаемся реализовать 4 битный счетчик, для этого используется 4 светодиода, которые есть на отладочной плате. Чтобы разглядеть то что ведется счет на диодах, необходима маленькая частота, иначе диоды просто горят. Поэтому решили программно уменьшить частоту делением на 16, для этого был взят шаблон с vhdl кодом. С этим шаблоном в симуляторе все работает отлично но в саму плиску залить прошивку не получается. Если есть другие способы уменьшения частоты то объясните пожалуйста, но желательно на основе этой проги сделать.

PS Стандартная лаба для студента 3-4 курса помигать светодиодиком имея кварц в 50МГц (при том что человек различает всего 50Гц smile.gif )
DCM на плате действительно нет. Пустите тогда обычный счетчик от 0 до 127 (скажем cnt_127) по исходной частоте, а тот который у Вас в программе cnt - добавьте еще условие чтобы он счелкал при cnt_127=127. Тогда Вы будете работать на исходной частоте, но переключаться счетчик будет на частоте в 256 раз меньшей (или 127?).

Сообщение отредактировал bogaev_roman - Jun 9 2010, 13:15
Go to the top of the page
 
+Quote Post
x66
сообщение Jun 9 2010, 13:14
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Цитата(bogaev_roman @ Jun 9 2010, 17:09) *
DCM на плате действительно нет. Пустите тогда обычный счетчик от 0 до 127 (скажем cnt_127) по исходной частоте, а тот который у Вас в программе cnt - добавьте еще условие чтобы он счелкал при cnt_127=127. Тогда Вы будете работать на исходной частоте, но переключаться счетчик будет на частоте в 256 раз меньшей (или 127?).


Спасибо за совет. А можно примерный алгоритм программы?
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jun 9 2010, 13:17
Сообщение #7


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(x66 @ Jun 9 2010, 16:00) *
Дело в том что в программе пытаемся реализовать 4 битный счетчик, для этого используется 4 светодиода, которые есть на отладочной плате. Чтобы разглядеть то что ведется счет на диодах, необходима маленькая частота, иначе диоды просто горят. Поэтому решили программно уменьшить частоту делением на 16, для этого был взят шаблон с vhdl кодом. С этим шаблоном в симуляторе все работает отлично но в саму плиску залить прошивку не получается. Если есть другие способы уменьшения частоты то объясните пожалуйста, но желательно на основе этой проги сделать.

Если хотите увидеть мигание светодиодов, тогда возьмите последовательное соединение 2-х счетчиков.
Первый счетчик многоразрядный(разрядность зависит от тактовой частоты, например как Вы написали равна 16), а второй 4-разрядный счетчик ставите считать импульсы приходящего с N-разряда (для Вас 16 разряд) многоразрядного разрядного счетчика (для Вас тогда 16 битный счетчик).
ЗЫ Делайте так ,чтобы длительность импульсов, которые идут на светодиоды была соизмерима единицами секунд.
ЗЫ ЗЫ Вместо многоразрядного счетчика можно использовать это


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
x66
сообщение Jun 9 2010, 13:26
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122



Большое спасибо за помощь, по пробую реализовать проект по вашим советам
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Jun 9 2010, 13:29
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(x66 @ Jun 9 2010, 17:14) *
Спасибо за совет. А можно примерный алгоритм программы?

Я не силен в VHDL так что будете проверять сами, но примерно так
Код
process (clk, cnt_127, rst)
begin
if (rst = '1') then
cnt_127 <= (others => '0');
elsif (clk'event and clk = '1') then
cnt_127 <= cnt_127 + '1';
end if;
//счетчик на 128

Код
process (clk,cnt_127, cnt, rst)
begin
if (rst = '1') then
cnt <= (others => '0');
elsif (clk'event and clk = '1') then
if (cnt_127 = '127') then
cnt <= cnt + '1';
end if;
end if;
end process;
//счетчик срабатывает только при cnt_127=127
Или еще проще - сделать только один счетчик на 10 разрядов и выводить только старшие разряды на диоды

Сообщение отредактировал bogaev_roman - Jun 9 2010, 14:03
Go to the top of the page
 
+Quote Post

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

 


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


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