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

 
 
> Нужен счетчик с последовательным выходом
Digi
сообщение Aug 20 2004, 20:44
Сообщение #1


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

Группа: Свой
Сообщений: 150
Регистрация: 20-08-04
Пользователь №: 529



Требуется на ПЛИС сделать проект, который в себе содержит 26-ти разрядный счетчик с выдачей значения по 3х проводной шине (такты, данные, окно) плюс еще немного логики и счетчиков. Требуемый счетчик я сделал так: взял lpm_counter и его выходы завел на мультиплексор, линии мультиплексора перебираются другим счетчиком. Все работает, но потребовалось мне поставить еще один мультиплексор и возникла проблема со свободными ячейками, а без него никак. ПЛИС EPM3064ATC100, пробовал запихнуть в EPM3128, все равно не лезет. Как можно по другому сделать этот счетчик, чтобы сэкономить ячейки ? Пробовал сделать на VHDL (я в нем слабоват) счетчик сделал, а как можно сдвигать полученное значение счетчика ? Как вообще делается сдвиговый регистр на VHDL ?

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Styv
сообщение Aug 23 2004, 09:12
Сообщение #2


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

Группа: Свой
Сообщений: 133
Регистрация: 16-08-04
Пользователь №: 504



Очень просто:
Tx <= TReg(0);
TReg<= '1' & TReg(25 downto 1);
или TReg<= TReg(0) & TReg(4 downto 1); - это сдвиг вправо, а
Tx <= TReg(25);
TReg<= TReg(24 downto 0) & '1'; сдвиг влево,
где TReg временный регистр, а Тх выход.
Go to the top of the page
 
+Quote Post
maegg
сообщение Aug 24 2004, 13:07
Сообщение #3


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

Группа: Свой
Сообщений: 129
Регистрация: 22-06-04
Из: S. Peterburg
Пользователь №: 103



--например на AHDL
--Стартстопный 24 разрядный счетчик
--с последовательной выдачей данных
SUBDESIGN shft_count
(
clk : INPUT; --вход клока для счета и для сдвига
enashft, enacount : INPUT; --разрешения сдвига и счета
ds : OUTPUT;
)
VARIABLE
count[23..0] : DFF;
BEGIN
count[].clk = clk;

IF enashft THEN
count[23..1].d = count[22..0].q;
count0.d = GND;
ELSIF (enacount ) THEN
count[].d = count[].q + 1;
ELSE
count[].d = count[].q;
END IF;

ds = count7.q;
END;
Go to the top of the page
 
+Quote Post
maegg
сообщение Aug 24 2004, 13:22
Сообщение #4


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

Группа: Свой
Сообщений: 129
Регистрация: 22-06-04
Из: S. Peterburg
Пользователь №: 103



Извиняюсь конечно ds = count23.q; а если нужны раздельные клоки для счета и сдвига лучше выработать строб на 1 такт глобальной частоты.
Go to the top of the page
 
+Quote Post
Digi
сообщение Aug 24 2004, 14:58
Сообщение #5


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

Группа: Свой
Сообщений: 150
Регистрация: 20-08-04
Пользователь №: 529



Спасибо за ответы. Пока сижу и обдумываю. Свой проект пока сделал на LPM... я просто разбил свой 26 разрядный счетчик на два 13 ти разрядных и все влезло.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:55
Рейтинг@Mail.ru


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