Easyelectronics.ru

Электроника для всех
Текущее время: 25 мар 2017, 12:48

Часовой пояс: UTC + 5 часов



    • Изготовление печатных плат
    • Создание принципиальных схем и проектирование печатных плат
    • Симуляция работы на spice моделях
    • Просмотр GERBER файлов

Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: ПЛИС длинный сдвиговый регистр с параллельной загрузкой VHDL
СообщениеДобавлено: 10 апр 2016, 16:59 
Старожил
Аватара пользователя

Зарегистрирован: 28 мар 2012, 10:33
Сообщения: 972
Откуда: Сочи
Подтолкните в нужную сторону, никак не могу сообразить.

С одной стороны поступают байты по 8-разрядной шине. Данные выдает контроллер AVR, он же выдает сигнал тактирования и строб загрузки.

Размер буфера 9 байт.

С другой стороны - непрерывный последовательный вывод 8х9 = 72 бита.

Я хочу сделать, чтобы выдача начиналась сразу после загрузки первого байта, а остальные байты подгружались уже в процессе вывода.

Как это сделать на VHDL?
Или просто логику работы подскажите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПЛИС длинный сдвиговый регистр с параллельной загрузкой VHDL
СообщениеДобавлено: 10 апр 2016, 17:11 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2541
FIFO из двух портовой памяти с разрядностью данных соответственно 8 и 1 бит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПЛИС длинный сдвиговый регистр с параллельной загрузкой VHDL
СообщениеДобавлено: 11 апр 2016, 10:25 
Старожил
Аватара пользователя

Зарегистрирован: 20 апр 2010, 17:59
Сообщения: 980
Откуда: Челябинск
Из краткого описания очень похоже на логику 74HC597.
Посмотреть структурную схему и описать на VHDL.

PS. А почему раздел "Экзотические контроллеры", ведь ПЛИС больше к "Цифровой электронике" относится.

_________________
"Жизнь - театр, мы в нем актеры"© У. Шекспир.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПЛИС длинный сдвиговый регистр с параллельной загрузкой VHDL
СообщениеДобавлено: 11 апр 2016, 10:42 
Старожил
Аватара пользователя

Зарегистрирован: 28 мар 2012, 10:33
Сообщения: 972
Откуда: Сочи
с загрузкой вопросов нет.
Не знал, как выгрузку организовать.

Теперь понял, что нужно отдельный 8-разрядный буфер и отдельный счетчик на выгрузку.

Еще подумаю.
PS/ про плис все пишут здесь, насколько я понимаю


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПЛИС длинный сдвиговый регистр с параллельной загрузкой VHDL
СообщениеДобавлено: 12 апр 2016, 01:04 
Старожил
Аватара пользователя

Зарегистрирован: 28 мар 2012, 10:33
Сообщения: 972
Откуда: Сочи
Нет, все равно не врубаюсь.
Ну сделал я память. 9 ячеек.
Как алгоритм работы реализовать. Вот смотрите.

Опускаем ресет. Указатель адреса нулевой, буфер пустой, сигнал разрешения загрузки высокий.
Передатчик устанавливает нужное значение и поднимает вход data_load.
Байт с входа data попадает в нулевую ячейку памяти.
Указатель адреса увеличивается на единицу.
---Здесь должна начаться передача, то есть внутренний сигнал разрешения передачи поднимается, адрес ячейки для передачи равен нулю, ячейка под таким номером загружается в выходной буфер, он начинает сдвигаться по тактовому сигналу.
Когда девять ячеек загружено, сигнал разрешения загрузки опускается (для простоты - до окончания передачи).

Как все это по процессам распихать?
И еще, есть толковая инструкция, как тестбенч сделать, чтобы сигналы посмотреть?
А то тыкаюсь, как слепой котенок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПЛИС длинный сдвиговый регистр с параллельной загрузкой VHDL
СообщениеДобавлено: 12 апр 2016, 01:29 
Старожил
Аватара пользователя

Зарегистрирован: 28 мар 2012, 10:33
Сообщения: 972
Откуда: Сочи
Ладно.

Код:
port
(
   clock:         in std_logic;    --- input clock
   reset:         in std_logic;
   data:            in std_logic_vector(7 downto 0);  --- data byte
   data_load:              in std_logic;
   load_enable:           out std_logic;   --receiver ready
   vout:            out std_logic
);

Код:
--память
type memory_t is array(8 downto 0) of std_logic_vector(7 downto 0);;
signal ram : memory_t;

Код:
--сигналы, относящиеся к загрузке
signal addr_to_load: std_logic_vector (3 downto 0) := (others => '0');
--к выгрузке
signal out_buffer: std_logic_vector (7 downto 0) := (others => '0');
signal shift_counter: std_logic_vector (2 downto 0):= (others => '0');
signal out_enable: std_logic;


Теперь, что в процессах будет происходить
1. асинхронный ресет - сброс всех значений на 0, выходы в Z-состояние.

2. если указатель адреса переполнен - опустить разрешение загрузки
иначе, если поднялся data_load, то загрузить data по адресу, адрес увеличить.

3. если указатель адреса больше 0 (хотя бы 1 байт загрузился) - поднять out_enable.

Так примерно?
С выводом еще думать надо.
Может, есть способ описать это все как-то попроще? Пробелы в знаниях сказываются.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПЛИС длинный сдвиговый регистр с параллельной загрузкой VHDL
СообщениеДобавлено: 12 апр 2016, 01:47 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2541
http://www.asic-world.com/examples/vhdl/syn_fifo.html


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB