Перейти к содержанию
    

Нужен счетчик с последовательным выходом

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

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очень просто:

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 временный регистр, а Тх выход.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

--например на 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;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извиняюсь конечно ds = count23.q; а если нужны раздельные клоки для счета и сдвига лучше выработать строб на 1 такт глобальной частоты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответы. Пока сижу и обдумываю. Свой проект пока сделал на LPM... я просто разбил свой 26 разрядный счетчик на два 13 ти разрядных и все влезло.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...