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

 
 
> Деление частоты в 50 миллионов раз., VHDL + XilinxISE
asya
сообщение May 17 2005, 23:14
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 4-02-05
Пользователь №: 2 412



Написал вот такой вот код.
Код
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity tst_clk is
   Port ( clock : in std_logic;
          drive : out std_logic);
end tst_clk;

architecture Behavioral of tst_clk is
signal driveout1:std_logic;
begin
drive<=driveout1;
process(clock)
variable count:integer range 0 to 1_000_000:=0;
begin
    if    (clock='1') and (clock'event) then
 count:=count+1;
    end if;
    if count=1_000_000 then
 count:=0;
 driveout1<=not driveout1;
    end if;
end process;  
end Behavioral;

Делаю это для того, чтобы поделить частоту на 50 миллионов. (там написал 1 миллион, потому что проблема - читайте ниже). И вот если я там меняю 1 миллион на большее число (больше 1 048 ХХХ), то не работает. а вот так - работает. (правда слишком высокая частота - мне надо больше поделить. Если пытаюсь увеличить range - то даже так уже не работает. Пытаюсь убрать вообще range (знаю, что нехорошо, но ради теста) - тоже не работает. Пользуюсь Xilinx ISE 6.3 + spartan3.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
oval
сообщение May 18 2005, 11:13
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 265
Регистрация: 15-03-05
Из: Москва
Пользователь №: 3 367



Помоему код вообще написан неправильно.
Выполнение кода процесса вызывается каждый раз по событию на сигнале clock (следует из списка чувствительности процесса). Каждый раз, как только на clock возникает событие выполняется инициализация переменной count и ей присваивается значение 0. Если событие на clock является передним фронтом, то count увеличивается на 1, то есть приобретает значение 1. Следующее условие count = 1000000 не выполняется никогда, т. к. переменная count уничтожается по завершении выполнения процесса и создается вновь при каждом входе в процесс по событию на clock. Переменной здесь пользоваться бессмысленно, тем более если схему нужно получить в железе. Можно пользоваться shared variable, она действительно подобно сигналу может хранить значение при выходе из процесса, но это несинтезируемая конструкция. Нужно использовать сигнал count. Для меня удивительно, что приведенный код вообще как-то работал.

Помоему дело здесь в самом коде.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 18 2005, 13:06
Сообщение #3


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(oval @ May 18 2005, 15:13)
переменная count уничтожается по завершении выполнения процесса и создается вновь при каждом входе в процесс по событию на clock.

Ничего подобного. Переменная существует всегда.

Другое дело, что да, переменные лучше не использовать. Можно огрести некоторые глюки. Да и посмотреть их историю можно не всегда. И читаемость кода ниже.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- asya   Деление частоты в 50 миллионов раз.   May 17 2005, 23:14
- - des00   Цитата(asya @ May 17 2005, 18:14)Делаю это дл...   May 18 2005, 03:56
- - kas   Цитата(asya @ May 18 2005, 07:14)Делаю это дл...   May 18 2005, 04:10
- - andrew_b   Нужно отказаться от integer и использовать std_log...   May 18 2005, 04:43
- - oval   Цитата(andrew_b @ May 18 2005, 16:06)Цитата(o...   May 18 2005, 14:13
|- - andrew_b   Цитата(oval @ May 18 2005, 18:13)Да, возможно...   May 19 2005, 06:44
- - Genn   Самый простой способ решить вашу задачу - это реал...   May 18 2005, 18:38
- - asya   Des, вы написали range с краями в два миллиарда с ...   May 18 2005, 21:24
|- - kas   Цитата(asya @ May 19 2005, 05:24)Kas, входная...   May 19 2005, 05:01
- - oval   Цитата(andrew_b @ May 19 2005, 09:44)Цитата(o...   May 19 2005, 11:26
- - Alexandr   To kas: Маленькая поправочка. Надо проинициализир...   May 19 2005, 12:22
- - asya   Цитата(Alexandr @ May 19 2005, 16:22)To kas: ...   May 19 2005, 22:02
|- - kas   Цитата(asya @ May 20 2005, 06:02)да. это для ...   May 20 2005, 01:46
- - kas   Цитата(Alexandr @ May 19 2005, 20:22)To kas: ...   May 20 2005, 01:43


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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 17:31
Рейтинг@Mail.ru


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