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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Оптимизация регистров в Quartus, Кто знает, как отключить?
margosh
сообщение Oct 27 2009, 12:46
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 23-04-09
Из: Питер
Пользователь №: 48 158



В моем случае по адресу 1 - FIFO, по адресу 0 - статусный регистр(взяла аналогично описанию корки DCFIFO), только статусный регистр я создаю сама(не с лап), и при обращении по адресу 1 запроса считывания выдаю его на readdata. Биты статусного регистра:
(0:2)бит - поле дынных содержит режим, устанавливающий размер пакета
3 - фифо пустой
4 - фифо полный
5 - ошибка: превышение заданных размеров контейнера
6 - контейнер заполнен
7 - контейнер отправлен
Передача не пакетная пока что, планирую и это реализовать, но хочу сначала с азами разобраться.
По достижению нужного количества слов (данный момент как раз устанавливается 3 битами статусного регистра, обьем всего FIFO выставлен для возможности хранения максимально длинного пакета): проц прекращает обращение к FIFO(Chipselect = 0) и FIFO начинает передавать накопленный пакет. Передача без подтверждения, стробирующих сигналов пока нет, просто слив пакета через ff_out. Как только FIFO опустел, он выставляет прерывание процу, тот снова толкает пакет и снимает обращение.


--------------------
Человек может вынести все, если его вовремя не остановить...
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 27 2009, 14:44
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



в Опсчем ясно, есть уже, и даже с каментами wink.gif , там осталось строб корректно передать в другой произвольный клоковый домен, как будет свободное время сегодня допишу и выложу...
Go to the top of the page
 
+Quote Post
margosh
сообщение Oct 28 2009, 07:04
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 23-04-09
Из: Питер
Пользователь №: 48 158



Если честно, расчитывала только на то, что носом ткнете в ошибки... Большое спасибо! Очень хочется узнать, что конкретно делаю не так...


--------------------
Человек может вынести все, если его вовремя не остановить...
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 28 2009, 08:21
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Вот как то так
Прикрепленный файл  tmp22_fifo00.rar ( 1.72 килобайт ) Кол-во скачиваний: 132

Там есчё нужно ессно дорабатывать, на идеал не претендую, но идею я думаю что донёс laughing.gif каменты есть wink.gif
Если чего не ясно спрашивайте. В обсчем там ключевые моменты:
- работа автоматов в 2 клоковых доменах: один загружает данные с авалона, второй по стробу выгружает фифошным интерфейсом с флагом валидности.
- передача одноклокового строба так, чтоб он был одноклоковый для принимающего.
И я там писал с рассчёта на 32-х битные дата-трансферы по шине (но использовал только нижные 8 байт), этот момент тоже проработайте для удобства в дальнейшем использования.
Если что, думаю товарисчи исправят или дополнят если что-то заФтыкал.

А на счёт
Цитата
Очень хочется узнать, что конкретно делаю не так

сравните ваш вариант и мой - сразу станет всё понятно biggrin.gif
Go to the top of the page
 
+Quote Post
margosh
сообщение Oct 28 2009, 10:57
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 23-04-09
Из: Питер
Пользователь №: 48 158



угу, с учетом того, что я пока писала проекты только на VHDL - "сразу станет все понятно" biggrin.gif ... сижу, разбираюсь, чуствую вопросов будет много)


--------------------
Человек может вынести все, если его вовремя не остановить...
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 28 2009, 11:01
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 margosh - мог написать на вхдл , но с учётом моего рабочего графика заняло бы дней 5 laughing.gif
Go to the top of the page
 
+Quote Post
margosh
сообщение Oct 28 2009, 12:32
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 23-04-09
Из: Питер
Пользователь №: 48 158



Принцип контроля за заполнением кадра для меня пока не ясен... Kuzmi4, прерывания Вы не используете, в таком случае Вы создаете какой-то аналог сигнала waitrequest? если не сложно, обьясните плиз, что происходит, когда заполнился первый кадр? С этого момента я суть программы перестаю улавливать...


--------------------
Человек может вынести все, если его вовремя не остановить...
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 28 2009, 13:12
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Слона то я и не заметил... rolleyes.gif
Вот с прерыванием длинной 1 клок на мастер
Прикрепленный файл  tmp22_fifo01.rar ( 1.97 килобайт ) Кол-во скачиваний: 113


Далее
Цитата
прерывания Вы не используете, в таком случае Вы создаете какой-то аналог сигнала waitrequest?
расшифруйте, что вы имели ввиду? Потому как мне кажется, что у вас неправильное понимание назначения waitrequest.

Потом
Цитата
.wrusedw (av_wr_counter), // wr counter
...
.rdusedw (fifo_rd_counter) // rd counter

Это счётчики заполнения/опустошения, тактируемые своими клоками (могу и ошибаться, что это именно wr/rdusedw, потому как давно с альтерой плотно не работал, но камент специально поставил laughing.gif ). Смотрите где они используются.

Идём дальше
Цитата
Принцип контроля за заполнением кадра для меня пока не ясен

А принцип контроля со сторы хоста простой - так как бурста нет, тогда пишем по одному байту и читаем флаг container_full (хотя это и не обязательно и я думаю избыточно в принципе - можно же вычитать stat/cfg регистр с длинной фифошки и в проге на сях для ниоса это учесть (если не он конфигурил), ну или в своём самописном мастере (опять же если не он конфигурил) - ну и дальше гнать данные по одному трансферу согласно вычитанного кода длинны). Если несколько разных мастеров работают, тогда каждый на начале трансфера должен записывать свой параметр длинны и по окончании записи нужного количества байт ждать прерывания и отдавать слейв другому мастеру, ну а тот повторяет процедуру...

Ну и наконец
Цитата
что происходит, когда заполнился первый кадр
- авалоновская машинка передаёт строб начала работы машинке отгрузки наружу, по опустошению фифо машинка отгрузки наружу переходит в состояние ожидания нового сигнала начала работы. Ну и выставляется интерупт хосту - что фифо готово к новой работе.

Вроде всё.
Go to the top of the page
 
+Quote Post
margosh
сообщение Oct 28 2009, 19:39
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 23-04-09
Из: Питер
Пользователь №: 48 158



Цитата
расшифруйте, что вы имели ввиду? Потому как мне кажется, что у вас неправильное понимание назначения waitrequest.

waitrequest - сигнал, котрый выставляет устройство, если не успевает вовремя выдать данные процессору или считать от процессора. Я не разобралась в другом wacko.gif , - в стробовых сигналах. Не могу понять что делает модуль interck2, Вы не могли бы прояснить? Если только сообщает о завершении считывания из fifo, то у меня это было предусмотрено выставлением соответствующего бита в статусный регистр.


--------------------
Человек может вынести все, если его вовремя не остановить...
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 29 2009, 08:14
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



И снова добрый день!
Итак, имеем
Цитата
waitrequest - сигнал, котрый выставляет устройство, если не успевает вовремя выдать данные процессору или считать от процессора
так а при чём тут
Цитата(margosh @ Oct 28 2009, 14:32) *
прерывания Вы не используете, в таком случае Вы создаете какой-то аналог сигнала waitrequest
??

Далее,
Цитата
что делает модуль interck2

Как говорил, у нас 2 машинки - одна записывает данные в фифо с авалона на клоке шины, другая считывает данные наружу (в external) по наружному клоку. Клоки могут быть произвольные, потому нужен модуль корректно передающий строб с одного произвольного домена в другой (это и есть interck2). Собсно строб нужен для того чтоб запускать выгрузку сразу по заполнению нужным количеством данных - на сколько я помню
Цитата
По достижению нужного количества слов ... проц прекращает обращение к FIFO(Chipselect = 0) и FIFO начинает передавать накопленный пакет.

Собсно отсюда и с неопределённости использования компонента вытекает избыточность в реализации.
Go to the top of the page
 
+Quote Post
margosh
сообщение Oct 29 2009, 08:58
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 23-04-09
Из: Питер
Пользователь №: 48 158



Здравствуйте smile.gif Овтечу подробнее во избежание повторений. Дело в том, что я сходу не въехала как работает interck2, и, так как у Вас не был использован сигнал прерывания, решила что он выполняет что-то вроде задержки нового сигнала записи от Авалона на тот период, пока кадр из фифо не считался. После более детального изучания поняла функциональное назначение interck2, правда масштабно представить себе этот переход от одного клока к другому не могу - еще с этим не работала, жапуталась laughing.gif
Дико извиняюсь, я не сообщила один важный момент - клоки не произвольные, - с авалона 50 МГц на запись, на чтение - 25 МГц с генератора, причем оба синхронизованны по фазе.

Для того, чтобы запускать выгрузку фифо сразу по достижению нужного количества данных в моей программке использовался бит 6 статусного регистра, теперь правда думаю, что условия его выставления необходимо подкорректировать, так же, как и условие выставления прерывания. Kuzmi4, огромное спасибо за помощь, и мои извинения, если запутала Вас в условиях задачи. Сажусь исправлять smile.gif


--------------------
Человек может вынести все, если его вовремя не остановить...
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 29 2009, 09:15
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 margosh - успехов laughing.gifв раЖпутывании
На счёт клоков - interck2 для произвольных доменов, так что тут можно поставить галочку

Завалил бобра-спас дерево smile.gif (народная мудрость)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 00:53
Рейтинг@Mail.ru


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