Потоковые операции подчиненного устройства




Скачать 331.74 Kb.
Дата16.07.2016
Размер331.74 Kb.
Расширенные операции шины Авалон

Потоковая операция

Потоковые операции подчиненного устройства


Операция чтения подчиненного устройства, выполняющего

потоковые операции

Операция записи подчиненного устройства, выполняющего

потоковые операции
Операции мастера, выполняющего потоковые операции.

Операции чтения на шине Авалон со временем ожидания (с латентностью).

Операция чтения с латентностью для подчиненного устройства.

Операция чтения с латентностью для мастера.

Сигналы Управления шины Авалон.

Сигнал запроса прерывания.

Логика управления сигналом сброса.

Сигнал начала операции.

----------------

Расширенные операции шины Авалон

Потоковая операция

Потоковые операции создают открытый канал между мастером, выполняющим потоковые операции, и подчиненным устройством, выполняющим потоковые операции, чтобы выполнять последовательные передачи данных. Этот канал позволяет передавать данные между парой мастер - подчиненный, поскольку данные становятся доступными, без того, чтобы мастер непрерывно обращался к регистрам состояния в подчиненном внешнем устройстве, с целью определить, может ли подчиненное устройство посылать или получать данные. Потоковые операции позволяют максимизировать производительность пары мастер - подчиненный, при условии что не возникает переполнение данными или выхода за нижний предел буфера обмена, на подчиненном внешнем устройстве(например, ситуации когда буфер обмена заполнен или считан весь).

В режиме потоковой операции, простые сигналы управления потоком данных передаются от подчиненного устройства мастеру, всякий раз, когда подчиненное устройство имеет новые данные (или может принимать новые данные), модуль шины Авалон автоматически передает данные. Режим потоковой операции устраняет то ограничение по производительности, которое обычно возникает для мастера, когда он вынужден проверять регистры состояния подчиненного устройства для каждой операции пересылки данный, потому что теперь мастер не должен обращаться к подчиненному устройству и проверять его регистры состояния для каждой операции. Это уменьшает сложность проекта внешних устройств типа мастер с ограниченной функциональной сложностью, таких как обычные контроллеры DMA, которые могут иметь только простые сигналы управления потоком данных и счетчик для операций пересылки данных между подчиненными периферийными устройствами по возрастающим адресам в памяти подчиненных устройств.

Потоковые операции подчиненного устройства

Подчиненный интерфейс для периферийных устройств выполняющее потоковые операции представляет собой три сигнала в дополнение к тем, что использовались для основных подчиненных операций: readyfordata, dataavailable и endofpacket. Порт подчиненного устройства выполняющий потоковые операции определен как подчиненный порт, который использует один или большее количество этих сигналов. Подчиненное устройство указывает, что готово принять операцию записи от модуля шины Авалон, устанавливая readyfordata. Подчиненное устройство указывает, что оно может выдать данные для операции чтения от модуля шины Авалон, устанавливая dataavailable. Когда эти сигналы сбрасываются, то такое состояние вынуждает модуль шины Авалон (и также порт тот мастера, который инициализировал данную потоковую операцию) ждать, пока подчиненное устройство не будет готово продолжить операцию.

Этот режим работы, в котором модуль шины Авалон только инициализирует операцию, в случае когда сигналы dataavailable или readyfordata установлены, применяется только в при операции между портом мастера выполняющего потоковые операции и портом подчиненного устройства выполняющего потоковые операции. Операция от порта мастера, который не имеет возможности выполнять потоковые операции, может быть выдана к подчиненному порту в любое время, независимо от того способен ли подчиненный порт выполнять потоковые операции или нет. Например, модуль шины Авалон может выдать операцию к подчиненному устройству от мастера, не выполняющего потоковые операции, (CPU) к порту подчиненного устройства, выполняющего потоковые операции, даже в то время как другая операция мастера, выполняющего потоковые операции (контроллер DMA) находится в состоянии ожидания, потому что для нее сигнал dataavailable - сброшен.

В течение любой операции, порт подчиненного устройства выполняющее потоковые операции может устанавливать сигнал endofpacket, который пропускают через модуль шины Авалон к внешнему устройству мастера так, чтобы он мог ответить. Интерпретация сигнала endofpacket зависит от проекта, и внешнее устройство - мастер должно иметь возможность соответственно ответить на этот сигнал. Сигнал endofpacket не гарантирует, что модуль шины Авалон остановит поток операций к подчиненному порту. Например, endofpacket может использоваться как пакет delineator(разграничитель пакетов в непрерывном потоке данных), так что внешнее устройство мастер знает, где начинаются и где заканчиваются пакеты в более длинном потоке данных. Или в другом варианте сигнал, endofpacket может быть предназначен для того, чтобы прервать поток операций по пересылке данных, и заставить мастера возвратиться позже, чтобы продолжить любые дальнейшие операции чтения или записи.



Операция чтения подчиненного устройства, выполняющего потоковые операции

Внешнее подчиненное устройство, выполняющее потоковые операции, устанавливая сигнал dataavailable указывает, что оно готово к операции чтения. Когда сигнал dataavailable сброшен, модуль шины Авалон не будет инициализировать операцию чтения. Когда сигнал dataavailable установлен, модуль шины Авалон может начать операцию чтения, устанавливая chipselect по переднему фронту синхрочастоты, подобно любой другой операции чтения Авалон. Синхронизация и последовательность выдачи сигналов read_n, byteenable_n и readdata те же самые как и нормальной операция чтения подчиненного устройства. В соответствии с назначениями, указанными в PTF файле, операция может использовать время предустановки и/или циклы ожидания, включая циклы ожидания, определяемые периферийным устройством.

После того, как операция заканчивается, и если внешнее устройство не имеет больше данных для последующих операций чтения, то оно должно сбросить сигнал dataavailable так, чтобы модуль шины Авалон не пытался инициализировать другую операцию чтения на следующем переднем фронте синхрочастоты. Когда внешнее устройство сбросит dataavailable, модуль шины Авалон вынужден сбросить сигналы chipselect, read_n, address и byteenable_n для этого подчиненного порта. Поэтому, модуль шины Авалон не может начинать другую операцию чтения с этим подчиненным портом, пока внешнее устройство снова не установит сигнал dataavailable. Если порт мастера, выполняющего потоковые операции, инициализирует операцию чтения (или продолжает инициализировать последовательные операции чтения) в то время как dataavailable подчиненного порта сбрасывается, то порт мастера просто вынужден ждать, пока подчиненный порт не сможет передавать данные снова.

Функция endofpacket не определена в Спецификации Шины Авалон; сигнал просто пропускают через модуль шины Авалон к порту мастера. Следующие рекомендации – не являются частью Спецификации Шины Авалон, но могут помочь понять, как порт мастера может фиксировать сигнал endofpacket от подчиненного порта. Подчиненный порт должен установить endofpacket в то же самое время, как он устанавливает достоверный сигнал readdata так, чтобы мастер мог фиксировать endofpacket вместе с readdata. Подчиненный порт может сбрасывать endofpacket для каждой операции, или периферийное устройство может устанавливать endofpacket неопределенно долго и ждать, пока мастер его не сбросит. В примере 14 показана операция чтения подчиненного устройства, выполняющего потоковые операции. В этом примере предположим, что внешнее устройство мастера Авалон, выполняющее потоковые операции, инициализирует последовательность потоковых операций начинающихся в то время, как подчиненный порт установит сигнал dataavailable. Кроме того, предположим, что мастер продолжает инициализировать операции чтения в непрерывной последовательности. Через некоторое время, подчиненный порт сбросит dataavailable, вынуждая модуль шины Авалон (и порт мастера) ждать. Позже подчиненный порт снова установит dataavailable, и модуль шины Авалон продолжит последовательность подчиненных операций чтения. В этом примере, обратите внимание на то, что данные читаются из одного и того же адреса подчиненного устройства, которое выставляет новые данные относительно каждой операции. Это - обычная операция для внешнего устройства, типа UART или SPI, управляемого через регистры состояния. В примере 14 показан подчиненный порт, который устанавливает сигнал endofpacket вместе с выдачей последнего блока данных и прежде, чем он сбросит dataavailable. Это - не требование, поскольку endofpacket не имеет никакого отношения к dataavailable, ни к тому, как внешнее устройство мастер отвечает на него. Последовательность операций заканчивается, когда модуль шины Авалон сбрасывает chipselect и read_n, в то время как dataavailable все еще остается установленным, что означает, что порт мастера, а не подчиненное устройство, выбрал режим завершения последовательности операций.



Пример 14. Операция чтения подчиненного устройства, выполняющего потоковые операции

Этот пример демонстрирует соответствующие PTF параметры:

Нет установленных циклов ожидания Read_Wait_States = "0"

Нет предустановки Setup_Time = "0"


Описание временных соотношений сигналов

(A) Первый цикл шины начинается на переднем фронте синхрочастоты.



  1. Устанавливаются, защелкнутые на регистре, достоверные выходные сигналы от шины

Авалон - address и read_n, к подчиненному устройству.

(C) Модуль шины Авалон декодирует address, затем устанавливает chipselect.



  1. Подчиненный порт устанавливает достоверный readdata перед следующим передним

фронтом синхрочастоты. Модуль шины Авалон фиксирует readdata на следующем

переднем фронте синхрочастоты.



  1. Для каждого цикла шина, что chipselect и read_n остаются установленными,

подчиненный порт производит достоверные readdata. (В этом примере, address остается

постоянным, но это не может иметь место для всех периферийных проектов).



  1. Подчиненный порт может установить сигнал endofpacket в любое время, в то время как он

устанавливает достоверные readdata. (В этом примере, подчиненное устройство сбросит

endofpacket после одного цикла шины, но это может варьироваться для разных

периферийных проектов.


  1. Подчиненное устройство, выполняющее потоковые операции, сбрасывает dataavailable,

вынуждая модуль шины Авалон отложить любые последующие потоковые операции

чтения. Обратите внимание, что read_n и chipselect все еще устанавливаются, указывая,

на то, что порт мастера, выполняющего потоковые, операции все еще ожидает окончания

операции.

(H) Модуль шины Авалон сбрасывает address, read_n и chipselect в ответ на dataavailable.

(I) Через некоторое время, подчиненный порт устанавливает dataavailable.



  1. В ответ на dataavailable, модуль шины Авалон подтверждает адрес, read_n и chipselect.

(Если бы не было потоковой операции, ожидающей продолжения, то эти сигналы остались

бы неопределенными).

(K) Новая операция потокового чтения начинается на переднем фронте синхрочастоты.

(L-M) Подчиненный порт устанавливает достоверные данные readdata перед передним

фронтом синхрочастоты для каждого цикла шины, так что chipselect и read_n остаются

установленными.



  1. Модуль шины Авалон сбрасывает read_n и chipselect, указывая на то, что пока нет

Необходимости для выполнения потоковых операций

  1. В этом примере сигнал dataavailable остается установленным, указывая, что другая

потоковая операция может начаться в любом более позднем цикле шины.

Операция записи подчиненного устройства, выполняющего потоковые операции

Внешнее подчиненное устройство, выполняющее потоковые операции указывает на то, что оно может принимать операцию записи, устанавливая readyfordata. Модуль шины Авалон никогда не будет инициализировать операцию записи, когда сигнал readyfordata находится в неактивном состоянии. Когда сигнал readyfordata установлен, модуль шины Авалон может начать операцию записи, устанавливая chipselect и address на переднем фронте синхрочастоты, подобном любой другой операции чтения Авалон. Синхронизация и последовательность выдачи сигналов write_n, byteenable_n и writedata выполняются так же, как и нормальная операция чтения подчиненного устройства. В соответствии с назначениями, указанными в PTF файле, операция может использовать время предустановки и/или циклы ожидания, включая циклы ожидания, определяемые периферийным устройством.

После того, как операция заканчивается и, если внешнее устройство не может принять большее количество данных в последующих операциях записи, то оно должно сбросить readyfordata так, чтобы модуль шины Авалон не инициализировал другую операцию записи на следующем переднем фронте синхрочастоты. Когда внешнее устройство сбросит readyfordata, модуль шины Авалон вынужден сбросить chipselect, write_n, address и byteenable_n для этого подчиненного порта. Поэтому, модуль шины Авалон не может начать другую операцию записи для этого подчиненного порта, пока внешнее устройство снова не установит readyfordata. Если порт мастера, выполняющего потоковые операции, инициализирует операцию записи (или продолжает инициализировать последовательные операции записи) в то время как readyfordata подчиненного порта сбрасывается, то порт мастера просто вынужден ждать, пока подчиненный порт не сможет снова принимать данные. Функция endofpacket не определена в Спецификации Шины Авалон, этот сигнал просто пропускают через модуль шины Авалон к порту мастера. Следующие рекомендации – не являются частью Спецификации Шины Авалон, но могут помочь понять, как порт мастера может фиксировать сигнал endofpacket от подчиненного порта. Подчиненный порт должен установить endofpacket как можно скорее после того, как он зафиксирует writedata от модуля шины Авалон. Подчиненный порт должен установить endofpacket прежде, чем будет сброшен chipselect, чтобы порта мастера мог зафиксировать endofpacket в течение той же самой операции шины. Подчиненный порт может сбрасывать endofpacket для каждой операции, или внешнее устройство может устанавливать endofpacket неопределенно долго и ждать когда его сбросит мастер. Если внешнее подчиненное устройство, выполняющее потоковые операции требует времени хранения (очень редкий случай), то endofpacket должен быть задержан до тех пор, пока модуль шины Авалон не сбросит chipselect (даже после того, как будет сброшен write_n).

В примере 15 показаны потоковые операции записи подчиненного устройства. В этом примере, предположим, что внешнее устройство мастера выполняющего потоковые операции Авалон инициализирует последовательность потоковых операций, начинающихся в то время, когда подчиненный порт установит readyfordata. Кроме того, предположим, что мастер продолжает инициализировать операции записи в непрерывной последовательности. Через некоторое время, подчиненный порт сбросит readyfordata, вынуждая модуль шины Авалон (и порт мастера) ждать. Позже подчиненный порт снова устанавит readyfordata, и модуль шины Авалон продолжит последовательность операций записи подчиненного устройства.

1 В этом примере, данные записываются по постоянному адресу подчиненного устройства, что является обычным для периферийных устройств, управляемых через регистры, например UART или SPI.
В примере 15 показано, как подчиненный порт устанавливает сигнал endofpacket во время последовательности операций записи. Интерпретация зависит от реализации проекта мастера и подчиненного устройства. Это - не требование, поскольку endofpacket не имеет никакого отношения к readyfordata, ни к тому, как внешнее устройство мастер отвечает на него. Последовательность операций заканчивается, когда модуль шины Авалон сбрасывает chipselect и write_n, в то время как readyfordata все еще остается установленным, что означает, что порт мастера, а не подчиненное устройство, выбрал режим завершения последовательности операций.

Пример 15. Операция записи подчиненного устройства выполняющего потоковые операции

Этот пример демонстрирует соответствующие PTF параметры:

Нет установленных циклов ожидания

Нет предустановки Setup_Time = "0"

Нет времени хранения






Описание временных соотношений сигналов

(A) Первый цикл шины начинается на переднем фронте синхрочастоты

(B) Устанавливаются, защелкнутые на регистре, достоверные выходные сигналы от шины

Авалон - address и read_n, к подчиненному устройству.

(C) Модуль шины Авалон декодирует адрес, затем устанавливает chipselect.

(D) В случае необходимости, подчиненное устройство устанавливает endofpacket перед предыдущим передним фронтом синхрочастоты для текущей операции шины. В этом примере, подчиненное устройство сбросит endofpacket после одного цикла шина, но это может варьироваться в зависимости от периферийного проекта.



  1. Подчиненный порт фиксирует writedata и endofpacket на переднем фронте

синхрочастоты.

(F-G) Для каждого цикла шины, что chipselect и write_n остаются установленными, модуль

шины Авалон выдает достоверные writedata, и подчиненный порт должен фиксировать их

на следующем переднем фронте синхрочастоты. В этом примере, address удерживается

постоянным, но это может иметь место не для всех периферийных проектов.


  1. Подчиненное устройство, выполняющее потоковые операции, сбрасывает readyfordata,

вынуждая модуль шины Авалон откладывать любые последующие потоковые операции записи. Обратите внимание, что write_n, chipselect и writedata все еще остаются установленые, указывая то, что порт мастера выполняющего потоковые операции все еще ожидает окончания операции. В ответ, модуль шины Авалон сбросит address, write_n, chipselect и writedata.

(I) Через некоторое время, подчиненный порт снова устанавливает readyfordata.

(J) В ответ на readyfordata, модуль шины Авалон подтверждает address, write_n, chipselect и writedata. Обратите внимание, что если бы не было потоковой операции, ожидающей продолжения, то эти сигналы остались бы неопределенными. Новая операция потоковой записи начинается на следующем переднем фронте синхрочастоты.

(K-L) Подчиненный порт фиксирует writedata на переднем фронте синхрочастоты. Для каждого цикла шины, пока chipselect и write_n остаются установленным, модуль шины Авалон выставляет достоверные writedata.

(M) Модуль шины Авалон сбросил write_n и chipselect, указывая что пока, нет данных для потоковых операций. В этом примере readyfordata остается установленным, указывая, что другая потоковая операция может начинаться в любом более позднем цикле шином.

Операции мастера, выполняющего потоковые операции.

Интерфейс для внешних устройств мастера выполняющего потоковые операции почти идентичен интерфейсу, используемому для нормальных операций мастера Авалон. Интерфейс мастера, выполняющего потоковые операции, представляет только один дополнительный сигнал endofpacket, который может или не может быть необходимым в зависимости от периферийного проекта. Синхронизация и последовательность выдачи сигналов write_n, read_n, address, writedata, readdata, byteenable_n и других сигналов следуют за тем же самым правилам как и нормальные операции мастера. Мастер, выполняющий потоковые операции, определен как порт мастера, который имеет назначение "Is_Stream_Read" или "Is_Stream_Write" или оба назначения, объявленные в файле PTF.

Если модулю шины Авалон требуется, чтобы мастер ждал его в любое, требуемое ему время, то модуль шины Авалон устанавливает сигнал запроса ожидания - waitrequest, и порт мастера должен ему повиноваться. Есть несколько причин, по которым мастеру, вероятно, придется ждать. Например, другой мастер может обращаться к целевому подчиненному порту, или подчиненный порт может требовать циклы ожидания, или порт подчиненного устройства выполняющего потоковые операции не может выдать или принять новые данные, и так далее. Причина установки сигнала запроса ожидания не касается порта мастера, потому что в любом случае, порт мастера не может прерывать операцию, как только она началась. Порт мастера должен только правильно выполнить свои действия по сигналу запроса ожидания. Логика внутри модуля шины Авалон скрывает детали от порта мастера, что упрощает периферийный проект для внешних устройств мастера.

Если сигнал endofpacket присутствует, то его пропускают от подчиненного порта до порта мастера в течение каждой операции. Порт мастера фиксирует endofpacket на последнем переднем фронте синхрочастоты как для операции чтения, так и для операции записи. Интерпретация сигнала endofpacket зависит от периферийного проекта. Например, сигнал endofpacket может использоваться как пакет delineator(разграничитель пакетов в непрерывном потоке данных), так что внешнее устройство мастер знает, где начинаются и где заканчиваются пакеты в более длинном потоке данных. В другом случае, главное внешнее устройство может быть разработано так, что по значению сигнала endofpacket, оно может определить, когда нужно инициализировать другую операцию.

Модуль шины Авалон не имеет встроенной блокировки времени доступа для порта мастера, независимо от того является ли это внешнее устройство потоковам или нет. Порт мастера должен остановиться, для пока сигнал запроса ожидания остается установленным, и нет никакого другого способа прервать операцию. Поэтому, если мастер нуждается в методе передачи данных к или от подчиненного устройства только по определенному условию, например, когда подчиненное устройство готово, пара master-slave должна использовать некоторое соглашение, которое использует или сигнал endofpacket или регистр состояния внутри подчиненного внешнего устройства, или оба этих условия.

Функция endofpacket не определена в Спецификации Шины Авалон, сигнал просто пропускают от подчиненного порта к порту мастер через модуль шины Авалон. Следующие рекомендации – не являются частью Спецификации Шины Авалон, но могут помочь понять, как порт мастера может фиксировать сигнал endofpacket от подчиненного порта. Порт мастера может фиксировать сигнал endofpacket на последнем переднем фронте синхрочастоты для текущей операции. Это - тот фронт синхрочастоты, для которого модуль шины Авалон сбросил сигнал запроса ожидания, и порт мастера готов закончить операцию. Когда и почему подчиненный порт сбросит сигнал endofpacket, зависит от проекта внешнего устройства. Однако, обратите внимание, что порт мастера только видит достоверный endofpacket сигнал в течение потоковой операции при адресации соответствующего подчиненного порта. В примере 16 показаны потоковые операции чтения, выполняемые мастером, за которыми следуют потоковые операции, в которых оба сигнала и запрос ожидания и endofpacket установлены в одно и тоже время в течение операции.



Пример 16. Мастер, выполняющий потоковые операции, производит операции чтения, за которыми следуют операции записи.





Описание временных соотношений сигналов

(A) Первый цикл шины начинается на переднем фронте синхрочастоты.

(B) Порт мастера устанавливает address, write_n и достоверные writedata.

(C) Модуль шины Авалон устанавливает waitrequest перед следующим передним фронтом синхрочастоты, вынуждая порт мастера ждать.

(D) Сигнал waitrequest установлен на переднем фронте синхрочастоты, так порта мастера удерживает сигналы address, write_n и writedata постоянными.

(E) Модуль шины Авалон сбрасывает waitrequest.

(F) Модуль шины Авалон фиксирует writedata на переднем фронте синхрочастоты.

(G) Порт мастера, выполняющего потоковые операции, сохраняет address и установленный write_n и выдает новые writedata. Обратите внимание, что в зависимости от периферийного проекта сигнал address может не оставаться постоянным.

(H) В случае необходимости, порт мастера фиксирует endofpacket на последнем переднем фронте синхрочастоты текущей операции. Порт мастера заканчивает потоковую операцию записи, сбрасывает address, write_n и writedata.

(I) Порт мастера в течение следующего цикла шины начинает операцию чтения, устанавливая read_n и достоверное значение сигналов address.

(J) Модуль шины Авалон устанавливает waitrequest, чтобы указать, что он не может возвращать достоверные данные на следующем переднем фронте синхрочастоты.

(K) В конечном счете, модуль шины Авалон сбрасывает waitrequest и выставляет достоверные readdata. В этом примере модуль шины Авалон устанавливает endofpacket, но интерпретация этого режима должна соответствовать внешнему устройству мастера выполняющего потоковые операции.

(L) Порт мастера фиксирует readdata и endofpacket, в случае необходимости, на переднем фронте синхрочастоты.

(M) Порт мастера сохраняет address и read_n, установленными для другой потоковой операции чтения, поэтому модуль шины Авалон выдает достоверные readdata.

(N) Порт мастера сбрасывает read_n и address и операция заканчивается.

Операции чтения на шине Авалон со временем ожидания (с латентностью).

Операции чтения Авалон со временем ожидания(с латентностью) увеличивают полосу пропускания для синхронных внешних устройств, которые требуют нескольких циклов времени ожидания для первого доступа, но потом могут возвращать данные каждый цикл шины. Не существует операции записи Авалон со временем ожидания, потому что операции записи Авалон не требуют какого либо подтверждения того, что сигнал возвратился от подчиненного порта. Латентные операции позволяют мастеру выдать запрос чтения, направленный к несвязанной задаче, и получить данные позже. Несвязанная задача может начинать другую операцию чтения, даже при том, что данные от первой операции все еще не возвращены. Это особенно часто употребляется для операций выборки команды и операций чтения DMA, для которых доступ к последовательным адресам является нормой. В этих случаях, мастер CPU или DMA может делать предвыборку ожидаемых данных, таким образом сохраняя синхронную память активной и сокращая среднее время доступа. Обратите внимание, что латентность отличается от циклов ожидания, и латентность и циклы ожидания могут происходить в течение одной операции. Например, если подчиненный порт без латентности требует, чтобы один цикл ожидания был бы представлен для того, чтобы он мог выдавать достоверные данные, то в лучшем случае порт может завершать только одну операцию за два такта синхрочастоты. С другой стороны, мастер, работающий с латентными устройствами, может поддерживать среднюю норму доступа к данным, близко к одной операции за цикл шины, при доступе к данным из латентного подчиненного порта без циклов ожидания. Даже при том, что первый доступ имеет начальное время ожидания в несколько циклов синхрочастоты, мастер может производить новую операцию чтения на каждом цикле синхрочастоты, и поэтому может получать достоверные данные на каждом цикле синхрочастоты. Основа операций с латентностью - разъединение стадии адреса и стадии данных при передаче данных по шине, и обеспечение дополнительного сигнала управления - datavalid, который сообщает о том, что из подчиненного порта возвратились достоверные данные. Выдача сигналов адреса и сигналов управления для того, чтобы инициализировать операцию, и фиксация приходящих данных проводится независимо, и по-возможности одновременно. После того, как модуль шины Авалон фиксирует адрес, мастер может выполнить любые другие операции, например, большее количество операций чтения. В течение стадии данных сразу или чуть позже, подчиненный порт устанавливает datavalid и возвращает достоверные данные.



Операция чтения с латентностью для подчиненного устройства.

Латентный подчиненный порт должен быть объявлен с назначением Read_Latency в системе PTF файла. Порт подчиненного устройства Авалон с латентностью, отличной от нуля требует один или более циклов шины для того, чтобы выдать данные после того, как адрес и сигналы управления будут зафиксированы от модуля шины Авалон. После того, как подчиненный порт фиксирует адрес, модуль шины Авалон может немедленно инициализировать новую операцию, даже перед тем как достоверные readdata возвратятся от предыдущей операции. Таким образом, не латентные операции подчиненного устройства Авалон заканчиваются только тогда, когда подчиненное устройство выдаст достоверные данные на шинах readdata модулю шины Авалон, и поэтому не латентные подчиненные устройства могут одновременно обрабатывать только одну операцию. Подчиненные порты, имеющие латентность чтения отличную от нуля, могут иметь в любое время многократные операции, находящиеся в стадии ожидания. Операции чтения подчиненного устройства с латентностью можно представить как операции, имеющие две стадии: стадию адреса и стадию латентности (времени ожидания).

Синхронизация и последовательность сигналов в течение стадии адреса идентичны сигналам для не латентных операций шины Авалон, кроме сигнала readdata. Подчиненный порт может использовать время предустановки и циклы ожидания, включая peripheralcontrolled циклы ожидания. После любой предустановки и/или циклов ожидания, подчиненный порт должен фиксировать address на последнем переднем фронте синхрочастоты для данной операции. Учтите, что для операций чтения без латентности, достоверные значения readdata всегда устанавливаются на последнем переднем фронте синхрочастоты. Для операций с латентностью, сигнал readdata не будет установлен в течение стадии адреса. Сразу же после того, как стадия адреса завершается, может быть инициализирована новая операция на сигналах chipselect, address, read_n и be_n (если они присутствуют).

В течение стадии латентности, внешнее устройство обрабатывает адрес по за несколько циклов синхрочастоты и, затем, выдает readdata после установленного времени ожидания. Если время латентности(ожидания) для чтения внешнего устройства - N, то подчиненный порт должен представить достоверные readdata на N-м переднем фронте синхрочастоты, после фронта, на котором был зафиксирован адрес. Например, если подчиненный порт имеет время латентности (ожидания) для чтения - 1 (то есть, объявление в PTF файле: Read_Latency = 1), то подчиненный порт представит достоверные данные на следующем(то есть, первом) переднем фронте синхрочастоты после фиксации адреса. Это будет фиксированное время латентности, и подчиненный порт обязан установить достоверные readdata через N циклов шины после того, как он зафиксирует адрес. Если внешнее устройство требует переменного количества времени, чтобы представить данные, подчиненный порт должен использовать управляемые внешним устройством циклы ожидания в течение стадии адреса. Стадия латентности и операция шины закончатся после того, как подчиненное устройство представит свои данные на readdata. В примере 17 показоно несколько передач данных между модулем шины Авалон и латентным подчиненным портом с PTF назначением Read_Latency=2. Этот подчиненный порт использует управляемые внешним устройством циклы ожидания.

Обратите внимание, что подчиненные операции чтения с латентностью, отличной от нуля, не будут гарантированно иметь последовательные расположения адресов. Например, если в системе есть несколько мастеров шины, то подчиненный порт не имеет представления, в каком порядке модуль шины Авалон предоставляет каждому мастеру доступ к шине. Также обратите внимание на то, что к подчиненному порту с латентностью чтения отличной от нуля, могут обращаться порты мастера, которые не знают о латентности, и такой случай не требует никаких специальных доработок проекта. Размещает таких мастеров на шине, модуль шины Авалон просто вынуждает их ждать, когда подчиненное устройство будет возвращать достоверные данные в каждой операции. Это ограничивает производительность определенной пары мастер – подчиненное устройство, при выполнении одновременно только одной операции.

Пример 17. Операция чтения с латентностью для подчиненного устройства


Этот пример демонстрирует соответствующие PTF параметры:

Латентность - два цикла шины

Время ожидания - управляемое внешним периферийным устройством

States:


Read_Latency = "2"

Read_Wait_States = "peripheral_controlled"





Описание временных соотношений сигналов

(A) Модуль шины Авалон инициализирует операцию чтения, представляя chipselect, read_n и address для стадии адреса новой операции.

(B) Подчиненный порт устанавливает waitrequest, так что предыдущий цикл шины становится циклом ожидания.

Модуль шины Авалон удерживает сигналы chipselect, read_n и address постоянными.

(C) waitrequest не установлен, так что модуль шины Авалон фиксирует readdata на переднем фронте синхрочастоты. Стадия адреса заканчивается и здесь начинается стадия данных.

(D) Первый цикл латентности (времени ожидания) заканчивает на этом переднем фронте синхрочастоты.

(E) Второй цикл латентности (времени ожидания) заканчивает на этом переднем фронте синхрочастоты. Подчиненный порт выдает достоверные данные на readdata, и здесь операция заканчиваются. Этот фронт clk также будет началом новой операции чтения.

(F) Модуль шины Авалон устанавливает address, read_n и chipselect для следующей операции чтения.

(G) Модуль шины Авалон начинает другую операцию чтения в течение следующего цикла шина, перед тем как возвратятся данные от предыдущей операции.

(H) Модуль шины Авалон фиксирует readdata после двух циклов латентности (ожидания)



  1. Модуль шины Авалон фиксирует readdata после двух циклов латентности (ожидания)



Операция чтения с латентностью для мастера.

Внешнее устройство - мастер, которое использует однобитовый входной сигнал datavalid, по определению работает с латентностью (с временем ожидания). Внешнее устройство – мастер, работающий с латентными подчиненными устройствами, способен к инициализации новой операции чтения прежде, чем он получит достоверные данные от предыдущей операции. Учтите, что мастер шины Авалон, не работающий с латентными подчиненными устройствами, закончит операцию чтения только тогда, когда он зафиксирует данные от модуля шины Авалон. Поэтому мастер шины Авалон, не работающий с латентными подчиненными устройствами, может обрабатывать только одну операцию одновременно. Мастер шины Авалон, работающий с латентными подчиненными устройствами, может иметь произвольное число операций чтения, ожидаемых в любое время.

Об операции чтения, выполняемой мастером, работающим с латентными подчиненными устройствами, можно думать о как двух различных стадиях: стадии адреса и стадии латентности (времени ожидания). Аналогично, о логике, которая управляет портом мастера, можно думать как о двух полуавтономных портах:

Порт адреса(адресная часть порта мастера), который инициализирует операцию, и порт данных, который фиксирует результаты предыдущих операций.

Синхронизация и последовательность сигналов в течение стадии адреса идентичны таковым для не латентных операций шины Авалон, кроме сигнала readdata. Порт адреса мастера должен представить address, read_n и, в случае необходимости, be_n, и должен удерживать эти сигналы постоянными до тех пор, пока установлен сигнал запроса ожидания - waitrequest. Стадия адреса заканчивается на первом переднем фронте синхрочастоты, сигнал запроса ожидания будет сброшен. Учтите, что для не латентных операций чтения, достоверные readdata всегда доступны на предыдущем переднем фронте синхрочастоты. Для операций с латентностью, отличной от нуля, readdata не обязательно будут возвращены в течение стадии адреса. Однако, данные могут возвратиться сразу после стадии адреса. Немедленно после того, как стадия адреса завершается, адресная часть порта мастера может инициализировать другое чтение или операцию записи. Даже, в то время как адресная часть порта мастера – находится в активном состоянии выдачи адреса, порт данных мастера может фиксировать достоверные данные от текущей операции или предыдущей операции, или находиться в состоянии ожидания модуля шины Авалон, который должен представить достоверные данные. Модуль шины Авалон устанавливает datavalid, когда он представляет достоверные readdata. Достоверные данные представленные на readdata должны находиться в требуемом порядке first-in-first-out (FIFO). Порт данных мастера должен фиксировать readdata на переднем фронте синхрочастоты, когда сигнал datavalid установлен. Это - единственное время, когда гарантируется что сигнал readdata, будет установлен. Поэтому, если может возникать состояние, в котором мастер не может немедленно обрабатывать приход readdata, то внешнее устройство мастера должно быть разработано с FIFO связанным с портом ввода readdata, чтобы гарантировать, что данные от модуля шины Авалон не будут потеряны.

Число циклов синхрочастоты времени ожидания для порта мастер не установлено. Поэтому, порт данных мастер должен быть разработан так, чтобы принять произвольное число циклов времени ожидания, независимо от установленного времени ожидания любых целевых подчиненных портов. Это включает возможность циклов с нулевым временем ожидания. Обратите внимание на то, что модуль шины Авалон может предоставлять циклы времени ожидания вне тех циклов, которые требуются подчиненному порту, работающему с латентностью. Например, дополнительное время латентности (ожидания) может быть представлено, когда к внешнему устройству необходимо обращаются через трехстабильный мост Авалон. Трехстабильный мост содержит внутренние регистры, которые добавляют латентность(время ожидания), но при этом улучшается максимальная частота работы системы - fMax и упрощается подключение к устройствам, расположенным вне кристалла.

Мастер, работающий с латентными подчиненными устройствами, может обращаться к не латентному подчиненному порту без любых специальных доработок проекта. С точки зрения порта мастера, в этом случае латентность - ноль. Readdata будут представлены немедленно на переднем фронте синхрочастоты, что будет окончанием стадии адреса, и что происходит точно так же, как стандартная операция шины Авалон. Нет никаких специальных требований для проекта при одновременной работе нескольких мастеров (режим мультимастера). В случае, когда несколько мастеров сосуществует в системе и производят операции чтения к латентным и/или не латентным подчиненным портам, модуль шины Авалон, исполняет арбитраж, и гарантирует, что каждый мастер получает свои требуемые данные. Это включает случай, когда порт мастера может выдавать адрес к одному подчиненному порту, и при этом фиксировать readdata от другого подчиненного порта.

Могут быть случаи, в которых внешнее устройство - мастер решит, что ему не требуются данные от операции, которая уже началась. В таком случае, порт мастера может использовать сигнал flush, чтобы отменить любые операции чтения, находящиеся в состоянии ожидания. Например, порт мастера, работающий с латентными подчиненными устройствами, производящий выборки команд для CPU может выдать несколько операций чтения, чтобы осуществлять предвыборку инструкций команд, которые затем помещаются в конвейер команд, но, если должна выполниться команда ветвления, то все выбирающиеся инструкции команды будут несоответствующими. Порт данных мастера может устанавливать сигнал flush на переднем фронте синхрочастоты, чтобы сбросить все операции, находящиеся в состоянии ожидания. Данные на шине datavalid будут сброшены до тех пор, пока данные следующей операции чтения не будут готовы на readdata. Модуль шины Авалон может фиксировать новое значение на шине address в то же самое время, когда установлен сигнал flush. Данные, соответствующие этому адресу становятся следующими достоверными данными, которые возвратяться на readdata.

В примере 18 показана передача данных с латентностью между модулем шины Авалон портом мастера, работающим с латентными подчиненными устройствами. В этом примере сигналы waitrequest и datavalid установлены в произвольное время, независимо от синхронизации, а порт мастера должен ответить соответственно, и на waitrequest и datavalid. В этом примере, вторая от конца операция производит сброс ожидающей операции, используя сигнал flush, но учтите, что нежелательные данные могли появиться на readdata, если по некоторым причинам время ожидания для этой операции было короче, чем время появления сигнала flush.

Пример 18. Операция чтения с латентностью для мастера




Описание временных соотношений сигналов

(A) Мастер инициализирует операцию чтения, представляя address и readdata для стадии адреса новой операции.

(B) Модуль шины Авалон установил waitrequest, так что порт мастера ждет и удерживает address и read_n постоянными для следующего цикла шина.

(C) waitrequest сброшен, так что модуль шины Авалон фиксирует address по переднему фронту синхрочастоты. Сигнал datavalid не установлен, так что мастер не фиксирует readdata.

(D) Модуль шины Авалон фиксирует новый address по переднему фронту синхрочастоты. Сигнал datavalid сброшен, так что мастер не фиксирует readdata.

(E) Модуль шины Авалон фиксирует новый address по переднему фронту синхрочастоты (в общем количестве выполнив три пустые операции). Сигнал datavalid сброшен, так что мастер не фиксирует readdata.

(F) Сигнал datavalid установлен, так что мастер фиксирует достоверные readdata.

(G) Сигнал datavalid сброшен, так что мастер не фиксирует readdata.

(H) Сигнал datavalid установлен, так что мастер фиксирует достоверные readdata.

(I) Мастер выставляет сигналы address и read_n для новой операции чтения.

(J) Сигнал datavalid сброшен, так что мастер не фиксирует readdata, сигнал flush установлен, так что модуль шины Авалон сбрасывает ожидающую операцию. Модуль шины Авалон фиксирует новый address.


  1. Сигнал datavalid установлен, так что мастер фиксирует достоверные readdata.

Большее нет операций, ожидающих выполнения.

Сигналы Управления шины Авалон.

Модуль шины Авалон имеет сигналы управления системного уровня, которые непосредственно не могут быть связаны с функциональными возможностями индивидуальных передач данных.



Сигнал запроса прерывания.

Большинство систем микропроцессора требует генерации сигналов прерывания и логики, устанавливающей приоритет обслуживания. Системный модуль осуществляет эти функции как для внешних устройств, так и для процессоров, связанных с модулем шины Авалон.

Каждый подчиненный порт может использовать свой выходной сигнал irq, который устанавливается всякий раз, когда внешнему устройству необходимо генерировать прерывание. Спецификация Шины Авалон не определяет, когда и почему сигнал irq может быть установлен. Сигнала irq – асинхронный, по отношению к любой операции шины, и может быть установлен в любое время. В наиболее часто встречающихся случаях, подчиненное устройство должно установить irq и сохранять установленное значение этого сигнала тех пор, пока порт мастера явно не сбросит этот запрос на прерывание. Приоритет прерывания назначен на каждый подчиненный порт, который использует irq. Приоритеты irq для каждого подчиненного порта определены в системе PTF файла.

Чтобы обработать запросы на прерывание, порты мастера могут использовать два входных сигнала: irq и irqnumber. Сигналы выходов от всех подчиненных портов - Irq, взяты все вместе по «ИЛИ» в системном модуле, и направлены к порту мастера, так, что когда любой подчиненный порт генерирует прерывание, сигнал irq на порте(ах) мастера будет установлен. Логика внутри модуля шины Авалон представляет закодированное значение IRQ (от 0 до 63) с самым высоким приоритетом на 6-ти битный порт irqnumber. Если несколько мастеров используют irq и сигналы irqnumber, то каждый мастер получает те же самые значения на irq и irqnumber. Спецификация Шины Авалон не определяет, когда или как внешнее устройство(а) мастера в системном модуле должно ответить на сигнал irq. В наиболее часто встречаемых случаях, мастер должен отреагировать на IRQ и, затем, «вручную» сбросить IRQ в том подчиненном устройстве, которое его выставляло.



Логика управления сигналом сброса.

Системный модуль имеет отдельный входной порт сброса, который может использовать пользовательская логика, внешняя к системному модулю. Это вход позволяет производить сброс системного модуля и любых внешних устройств, которые он содержит. Этот глобальный сигнал сброса объединен с другой логикой сброса внутри системного модуля, и, затем, распределен по всем внешним устройствам Авалон, которые могут использовать сигнал типа reset. Каждое внешнее устройство Авалон может интерпретировать (или игнорировать) reset, в зависимости от требований проекта периферийных устройств.

Внутри системного модуля, есть три условия, которые могут заставлять установить сигнал reset:

1. PLD был переконфигурирован, и сразу после того, как PLD завершает конфигурацию, модуль шины Авалон обнаруживает это состояние, и устанавливает сигнал reset на всех внешних устройствах Авалон на один, по крайней мере, цикл синхрочастоты. Для модуля шины Авалон, полезно обрабатывать этот случай автоматически. После того, как PLD завершает процесс конфигурации, PLD находится в состоянии сброса. Однако, это не гарантирует, что все внешние устройства Авалон находятся в их состояниях, определенных по сбросу.

2. Глобальный ввод сброса на системном модуле был установлен.

3. Порт подчиненного устройства Авалон установил свой сигнал resetrequest (определенный ниже).

Вообще, внешние устройства, которые исполняют операции, охватывающие многократные циклы синхрочастоты, должны встать в четкое состояние сброса всякий раз, когда reset установлен. Сигнала reset – асинхронный и не имеет никаких отношений к какой либо операции шины, и может быть установлен в любое время.

Подчиненные порты могут использовать сигнал resetrequest, чтобы заставить системный модуль произвести полный сброс. Сигнал resetrequest полезен для функций подобных сторожевым таймерам, которые могут произвести сброс всей система, в том случае, если их не обслужат в пределах гарантируемого периода времени. Почему и когда внешнее устройство должно установить сигнал resetrequest, в Спецификации Шины Авалон не определено. Обратите внимание, что resetrequest - не сигнал запроса подобно irq, который может обслужиться в более позднее время. resetrequest заставляет модуль шины Авалон немедленно устанавливать сигнал reset на всех внешних устройствах Авалон, которые используют сигнал reset, и не позволяет другим внешним устройствам Авалон заканчивать операции, находящиеся в состоянии ожидания, перед подтверждением сброса.



Сигнал начала операции.

Входной сигнал порта подчиненного устройства - begintransfer предлагает простой для понимания индикатор того, что была инициализирована новая операция подчиненного устройства Авалон. Внешние устройства Авалон, по определению, соблюдают Спецификацию Шины Авалон, и должны выдавать и принимать сигналы шины Авалон в соответствующей последовательности. Это может быть трудно для логики, не связанной непосредственно с интерфейсом Авалон (включая собственный мозг проектировщика) чтобы точно определить, когда начинается операция подчиненного устройства Авалон, потому что адрес, сигнал разрешения чтения, сигнал разрешения записи, и сигналы chipselect не обязательно меняются в начале каждой операции. Модуль шины Авалон устанавливает сигнал begintransfer в течение первого цикла шина каждой операции подчиненного устройства Авалон. Использование этого сигнала зависит от периферии. Сигнал begintransfer может быть полезным для отладки и расшифровки временных диаграмм при моделировании операций Авалон. Сигнал begintransfer может также упростить проект менее интеллектуальных периферийных устройств, которые выполняют операций типа «сброс при чтении», «установка значения при записи», или других операций, и которые не требуют, чтобы их логика исполняла все аспекты операций Авалон.


База данных защищена авторским правом ©uverenniy.ru 2016
обратиться к администрации

    Главная страница