В описании операций чтения, приведенных ниже, важно понять, что в реальных обстоятельствах, передачи данных по шине - не изолированные события. Обычно они происходят в непрерывной последовательности друг за другом. Например, операция чтения подчиненного устройства может немедленно предшествовать или следовать за несвязанным циклом операции записи. В течение операции чтения, сигнал read_n целевого внешнего устройства и сигналы chipselect обязательно установлены, как показано в диаграммах синхронизации. Однако, после того, как операция чтения заканчивается, chipselect и read_n могут остаться установленным, если на следующем цикле шины следует другая операция с этим подчиненным портом. Диаграммы синхронизации ниже показывают неопределенным значениям на подчиненных сигналах порта прежде и после операции чтения. Основные операции чтения подчиненного устройства не имеют времени ожидания.
Основная операция чтения подчиненного устройства
Основная операция чтения подчиненного устройства - основа для всех операций чтения подчиненного устройства Авалон. Все другие операции чтения подчиненного устройства используют комбинации основных сигналов, и осуществляют измененные режимы синхронизации при чтении из подчиненного устройства. Основная операция чтения из подчиненного устройства инициализирована модулем шины Авалон, и передает один блок данных, полной разрядности (ширины) порта данных внешнего устройства, из подчиненного порта к модулю шины Авалон. Основные операции чтения из подчиненного устройства не имеют времени ожидания.
На примере 1 показано, как производится основная операция чтения. В основном цикле чтения, передача по шине начинается на переднем фронте синхрочастоты, состояния ожидания не требуются, поэтому операция чтения завершается на следующем переднем фронте синхрочастоты. Для такой операции, чтобы завершить ее в одном цикле шина, целевое внешнее устройство должно немедленно и асинхронно выдать содержание адресованных данных модулю шины Авалон. На первом переднем фронте clk, шина Авалон выставляет сигналы address, be_n и сигналы read_n к целевому внешнему устройству. Внутри модуля шины Авалон производится декодирование сигналов адреса, и формируется комбинаторный сигнал выбор устройства – chipselect, который и управляет к подчиненным портом. Как только сигнал chipselect будет установлен, подчиненный порт немедленно выдает свои данные - readdata, так быстро как только это возможно. Затем, модуль шины Авалон снимает свои данные - readdata на следующем переднем фронте синхрочастоты.
Пример 1. Основная операция чтения подчиненного устройства
Этот пример демонстрирует соответствующие PTF параметры:
Нет тактов ожидания
Нет предустановки Setup_Time = "0"


Описание временных соотношений сигналов
(A) Первый цикл шины начинается на переднем фронте clk.
(B) Выходов регистров, на которых защелкнуты сигналы address и read_n, приходящие от
шины Авалон к подчиненному устройству - достоверны
(C) Шина Авалон декодирует сигналы address и устанавливает достоверный сигнал
chipselect подчиненному устройству.
(D) Подчиненный порт возвращает достоверные данные в течение первого шина цикла.
(E) Шина Авалон фиксирует данные readdata на следующем переднем фронте clk, и операция чтения на этом заканчивается. Следующий цикл шины мог бы быть началом другой операции шины.
Заметьте, что эта основная операция чтения с состояниям с нулевым временем ожидания соответствует только абсолютно асинхронных внешних устройств, типа памяти RAM на кристалле или быстрой SRAM вне кристалла. Целевое внешнее устройство должно выставить данные на шину Авалон немедленно, как только устройство выбрано и/или изменился адрес. Для того чтобы работать должным образом, выходы readdata должены быть достоверными к следующему переднему фронту синхрочастоты. Синхронные внешние подчиненные устройства, которые защелкивают входные или выходные сигналы в регистре, не могут использовать основную операцию чтения с состояниями нулевого временем ожидания. Большая часть внешних устройств, находящихся внутри кристалла используют синхронный интерфейс, которому требуется по крайней мере один такт синхрочастоты, чтобы зафиксировать данные, что в свою очередь, требует по крайней мере одного цикла ожидания во время операции чтения. Сигнал разрешение байта - be_n может быть выдан на подчиненный порт внешнего устройства. Сигнал be_n – не играет какой либо роли при подчиненных операциях чтения. В самом простом случае, подчиненный порт игнорирует be_n, и всегда выдает все байты, когда read_n установлен. Модуль шины Авалон фиксирует данные из порта readdata полной ширины при каждой операции чтения. Поэтому, если отдельный байта не разрешен в течение операции чтения, то значение, возвращаемое к модулю шины Авалон будет неопределено, что может быть будет затрагивать мастера, получающего данные.
Когда сигнал chipselect – не активен, то все другие входные сигналы должны игнорироваться. Выходы подчиненного порта могут управляться, или оставлен неопределенными, когда этот порт не выбран. Сигнал chipselect приходящий на целевое внешнее устройство может быть комбинаторный, сформированный из значений адреса, защелкнутых на регистрах. Кроме того, фронт, возникающий при переходе сигнала chipselect из низкого в высокий уровень, или, фронт, возникающий при переходе сигнала read_n из высокого в низкий уровень, не может использоваться как условие запуска начала чтения, потому что такой фронт может иметь дребезг.
Операция чтения подчиненного устройства с установленными циклами ожидания
Порты, используемые для подчиненной операции чтения с установленными циклами ожидания идентичны, тем которые были использованы для основной операции чтения. Различие состоит только в синхронизации сигналов. Подчиненные операции чтения с циклами ожидания полезны для внешних устройств, которые не могут представлять данные в пределах единственного цикла синхрочастоты. Например, модуль шины Авалон устанавливает достоверный адрес и управление и выполняет один установленный цикл ожидания, т. е. он ждет один цикл синхрочастоты перед фиксацией данных от внешнего устройства. Установленные циклы ожидания для внешнего устройства объявлены в файле PTF. Они будут выполняться, потому что модуль шины Авалон циклически повторяет каждую операцию чтения до тех пор, пока не выполнится такт ожидания с установленным номером. На примере 2 показана операция чтения подчиненного устройства с одним циклом ожидания. Модуль шины Авалон выставляет сигналы address, be_n, read_n и chipselect в течение первого шина цикла. Из-за цикла ожидания, внешнее устройство не должно представить readdata в пределах первого шина цикла, первый цикл шины будет и первым (и только) циклом ожидания. Подчиненный порт может фиксировать адрес и сигналы управления в любое время. Синхронные внешние устройства, расположенные на кристалле, будут вероятно фиксировать адрес и сигналы управления на переднем фронте clk в начале второго шина цикла (конец цикла ожидания). В течение второго цикла шины, целевое внешнее устройство представляет модулю шины Авалон свои данные на выходах readdata. На 3-ьем и конечном переднем фронте синхрочастоты, модуль шины Авалон фиксирует данные от подчиненного порта на readdata, и завершает операцию.
Пример 2. Операция чтения подчиненного устройства с одним установленным циклом ожидания.
Этот пример демонстрирует соответствующие PTF параметры:
Операция чтения от синхронного внешнего устройства
1 установленный цикл ожидания Read_Wait_States = "1"
Нет предустановки Setup_Time = "0"

Описание временных соотношений сигналов
(A) Первый цикл шины начинается на переднем фронт из clk.
(B) Все выводы address и read_n от мастера, формируемые на регистрах – достоверны. Эти сигналы направляются к подчиненному устройству.
(C) Шина Авалон декодирует адрес и устанавливает chipselect.
(D) Передний фронт из clk отмечает конец первого цикла и только один цикл ожидания. Если подчиненный порт синхронен, то он, вероятно, фиксирует address, read_n и chipselect по этому переднему фронту clk.
(E) Периферийное устройство выставляет свои достоверные данные на выходах readdata в течение второго цикла шины.
(F) Модуль шины Авалон фиксирует readdata на переднем фронте clk, и заканчивает операцию чтения. Следующий цикл шины может быть началом другой операции шины.
Операции чтения с одним циклом ожидания часто используются для синхронных, внешних устройств, расположенных на кристалле. Стиль проектирования в PLD диктует следующую методологию - интерфейс между модулями должен быть синхронизирован регистрами. Добавление цикла ожидания делает операцию более удобной для проекта в PLD, потому что внешнее устройство может фиксировать синхронные сигналы address, be_n, read_n и chipselect на переднем фронте clk, после того, как chipselect установлен. Тогда целевое внешнее устройство имеет, по крайней мере, один полный цикл шины, чтобы представить данные модулю шины Авалон при чтении.
На примере 3 показана операция чтения с несколькими установленными циклами ожидания. Этот случай почти идентичен примеру 2, за исключением того, что шина Авалон теперь ждет больше чем один цикл шины перед осуществлением выборки readdata от подчиненного внешнего устройства.
Пример 3. Операция чтения подчиненного устройства с несколькими установленными циклами ожидания.
Этот пример демонстрирует соответствующие PTF параметры:
Операция чтения от синхронного внешнего устройства
2 установленных цикла ожидания Read_Wait_States = "2"
Нет предустановки Setup_Time = "0"

Описание временных соотношений сигналов
(A) Первый цикл шины начинается на переднем фронте clk.
(B) Все выводы address и read_n от мастера, формируемые на регистрах – достоверны. Эти сигналы направляются к подчиненному устройству.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


