Easyelectronics.ru

Электроника для всех
Текущее время: 27 мар 2017, 11:32

Часовой пояс: 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
Сообщения: 2543
FIFO из двух портовой памяти с разрядностью данных соответственно 8 и 1 бит.


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

Зарегистрирован: 20 апр 2010, 17:59
Сообщения: 981
Откуда: Челябинск
Из краткого описания очень похоже на логику 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
Сообщения: 2543
http://www.asic-world.com/examples/vhdl/syn_fifo.html


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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