|
|
  |
СoolRunner-II XC2C256, Деление частоты программно |
|
|
|
Jun 9 2010, 12:24
|
Участник

Группа: Участник
Сообщений: 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 файла, не хочет приписывать ножки. В симуляторе программа работает нормально. Если кто знает в чем проблема просьба помочь.
|
|
|
|
|
Jun 9 2010, 13:00
|
Участник

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

|
Дело в том что в программе пытаемся реализовать 4 битный счетчик, для этого используется 4 светодиода, которые есть на отладочной плате. Чтобы разглядеть то что ведется счет на диодах, необходима маленькая частота, иначе диоды просто горят. Поэтому решили программно уменьшить частоту делением на 16, для этого был взят шаблон с vhdl кодом. С этим шаблоном в симуляторе все работает отлично но в саму плиску залить прошивку не получается. Если есть другие способы уменьшения частоты то объясните пожалуйста, но желательно на основе этой проги сделать.
|
|
|
|
|
Jun 9 2010, 13:09
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(x66 @ Jun 9 2010, 17:00)  Дело в том что в программе пытаемся реализовать 4 битный счетчик, для этого используется 4 светодиода, которые есть на отладочной плате. Чтобы разглядеть то что ведется счет на диодах, необходима маленькая частота, иначе диоды просто горят. Поэтому решили программно уменьшить частоту делением на 16, для этого был взят шаблон с vhdl кодом. С этим шаблоном в симуляторе все работает отлично но в саму плиску залить прошивку не получается. Если есть другие способы уменьшения частоты то объясните пожалуйста, но желательно на основе этой проги сделать. PS Стандартная лаба для студента 3-4 курса помигать светодиодиком имея кварц в 50МГц (при том что человек различает всего 50Гц  ) DCM на плате действительно нет. Пустите тогда обычный счетчик от 0 до 127 (скажем cnt_127) по исходной частоте, а тот который у Вас в программе cnt - добавьте еще условие чтобы он счелкал при cnt_127=127. Тогда Вы будете работать на исходной частоте, но переключаться счетчик будет на частоте в 256 раз меньшей (или 127?).
Сообщение отредактировал bogaev_roman - Jun 9 2010, 13:15
|
|
|
|
|
Jun 9 2010, 13:14
|
Участник

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

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

я только учусь...
     
Группа: Модераторы
Сообщений: 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Jun 9 2010, 13:26
|
Участник

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

|
Большое спасибо за помощь, по пробую реализовать проект по вашим советам
|
|
|
|
|
Jun 9 2010, 13:29
|
Профессионал
    
Группа: Свой
Сообщений: 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
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|