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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
Stewart Little
сообщение May 29 2008, 13:31
Сообщение #16


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Kuzmi4 @ May 29 2008, 16:31) *
я пришёл к выводу что этот сигнал нужен когда входной порт имеет размерность больше 8 бит - то есть 16 или 32.

Скорее наоборот - если разрядность данных меньше 32-x. Byteenable нужен для того, чтобы уметь писать в 32-разрядную память побайтно и пополусловно. Если у Вас разрядность данных от записи к записи не меняется, то он и не нужен (т.е. будет назначен константой автоматически).


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение May 29 2008, 13:45
Сообщение #17


Гуру
******

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



У меня тут такая заковыка - есть 2 8 битных регистра и 1 16 битный - то есть в обсчем 32 бита.
Потому шину readdata решил сделать 16 битной.
Когда идёт чтение данных то я выдаю на порт readdata (который у меня 16 битный) то что у меня в фифо. А когда идёт чтение конфига или статуса - то тогда на нижние 8 бит ложаться соответствующие регистры. Что читается смотрю с адреса авалона что заводится на слейв.
Так понимаю, что если у меня не будет записи в мой 16 битный регистр данных то можно и не юзать byteenable..
Потому пока решил что ничего писать не буду туда(оставим разбор с этим зверем до лучших времён sad.gif , но хотелось всё таки прояснить... )
Но как быть с чтением - всё ли так там будет корректно ?? smile3046.gif
Всмысле чтение с 16/8 - битного регистра в 32 битный РОН CPU ? Или стоит расширить всё таки регистры до 32-х?

2 Stewart Little - на счёт byteenable - а по моему не совсем так:
Avalon Memory-Mapped Interface Specification, p.27
Цитата
During write transfers to a slave port greater than 8
bits wide
, the system interconnect fabric asserts the byteenable signal
to specify which byte lane(s) to write

Тобто более 8 а не меньше или равно 32...
Go to the top of the page
 
+Quote Post
vetal
сообщение May 29 2008, 16:34
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



исходить надо из разрядности мастера, периферии и плотности упаковки регистров. Можно сделать шину 16 битную и выделить 1 бита адреса, тогда byte_enable будет работать при обращении к регистрам управления, например, расположенным по адресу 1 периферийного устройства. Если выделить 2 бита адреса и регистры растянуть по доступным адресам - byte_enable не понадобится.
В общем случае byte_enable служит для доступа к регистрам(элементам адресного пространства) меньшим ширины шины данных периферийного устройства и кратным 8 бит. byte_enable необходимо заводить для обеспечения большей плотности упаковки регистров внутри адресного пространства периферийного устройства, сигнал не является обязательным в случае когда вы не используете его функциональность.

Для примера можно сделать так: два 8 битных регистра и один 16 битный могут лежать по одному адресу. При 16 битной записи(с маской byte_enable="11") данные будут записываться в 16 битный регистр, а при 8 битной записи (с маской byte_enable="10"|"01") данные будут записываться в 8 битные регистры, отвечающие за другие функции.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 2 2008, 12:09
Сообщение #19


Гуру
******

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



2 vetal - а как маскировать byte_enable - это ж я так понял арбитр выставляет ?
Тобто юзеру к нему не достучаться - это внутреннее мнение арбитра...
Go to the top of the page
 
+Quote Post
vetal
сообщение Jun 2 2008, 12:20
Сообщение #20


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
2 vetal - а как маскировать byte_enable - это ж я так понял арбитр выставляет ?
Тобто юзеру к нему не достучаться - это внутреннее мнение арбитра...

IOWR(IORD)8 @ base +0 = доступ к нижней половине 16-ти бит (будет выставлена маска 01)
IOWR(IORD)8 @ base +1 = доступ к верхней половине 16-ти бит (будет выставлена маска 10)
IOWR(IORD)16 @ base = доступ ко всему регистру. (будет выставлена маска 11)
Причем ваше периферийное устройство может по всем этим трем(шести) типам доступа сопоставлять разные регистры/выполнять раные функции.

PS: Самый простой способ разобраться - создать тестовую систему + тестовое ПО и прогнать в симуляторе.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 2 2008, 13:09
Сообщение #21


Гуру
******

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



2 vetal - спасибо, буду знать.
А идея на счёт места действительно интересная..
А в каком симуляторе можно посмотреть сигналы в собранной системе ниоса при выполнении ? Вроде ж нету такого....
Go to the top of the page
 
+Quote Post
vetal
сообщение Jun 2 2008, 13:25
Сообщение #22


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
А в каком симуляторе можно посмотреть сигналы в собранной системе ниоса при выполнении ? Вроде ж нету такого....

Modelsim. Где-то в документации должно быть описано как это делать.
Как вариант - смотреть нужные сигналы в нужный момент времени сигналтапом.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 2 2008, 13:54
Сообщение #23


Гуру
******

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



2vetal - я сигналы смотрю симулятором в квартусе.
Давно хотел перейти на моделсим, но как то руки не доходили, буду знать есчё один его плюс smile.gif
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jun 2 2008, 19:49
Сообщение #24


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Kuzmi4 @ Jun 2 2008, 17:54) *
2vetal - я сигналы смотрю симулятором в квартусе.
Давно хотел перейти на моделсим, но как то руки не доходили, буду знать есчё один его плюс smile.gif

Изучайте : AN 351: Simulating Nios II Embedded Processor Designs


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 20 2008, 12:37
Сообщение #25


Гуру
******

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



Возвращемся к нашим баранам...
Есть непонятный нъюанс с адресом на шине :
Возмём обсчий случай - допустим я хочу сделать Avalon Memory Mapped Slave и сварганить там например N регистров каких то 8-битных каких то 16-ти, каких то 32-х
Код
N = N1(8bit)+N2(16bit)+N3(32bit)

Итого у меня выходит целый набор..
А как это указать в компоненте ?
+ alignment - я так понимаю это не касается кратной 8 адресации.... wacko.gif

На сколько я понимаю - address - это типа внутренний адрес в адресном пространстве.
Но на счёт разрадности - если у меня на address 1 там или 2 - это сколько смещение от начала ? В даташите написано
Цитата
For example, address= 0 selects the first <slave data width> bits of slave data; address=1 selects the second <slave data width> bits of slave data.

Однако что это за таинственная "slave data width" - не указано и особенно где её задавать.
Вопрос вроде и простой , но что-то нету как то глобального понимая... sad.gif
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 21 2008, 16:27
Сообщение #26


Гуру
******

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



Покопал в этом направлении - посмотрел в глубь собранной системы NIOSII - там где у меня UART прикручен.
Значит имеем занятое адресное пространство - хх00 - хх1F - итого 31 бит получается - далее к компоненту подходит шина адреса - [2:0] - итого 3 штуки .
Далее смотрю в даташит на UART - там 6 регистров по 16 бит -> 6х16 бит - это как раз == 31бит х 3 Тобто вроде всё верно , НО.. тут у меня полный ступор - wacko.gif - почему в мемори мапе оно занимает только 31 бит ?? Копание литературы - не внесла глобальной ясности sad.gif ...
Как то не совсем сходится - help.gif
Может кто с знающих объяснить - почему так??
Go to the top of the page
 
+Quote Post
vetal
сообщение Jun 21 2008, 18:21
Сообщение #27


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
Значит имеем занятое адресное пространство - хх00 - хх1F - итого 31 бит получается

32 элемента адресного пространства, а не бита!
Если точнее, то 32 элемента адресного пространства 32битного мастера процессора в байт адресуемом режиме.
32 элемента = 32 8 битных регистра = 16 16битных регистров = 8 32битных регистров = 2^3 smile.gif
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 22 2008, 14:21
Сообщение #28


Гуру
******

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



2 vetal - спасибо,
вчера сам догнал что пургу сморозил 01.gif , да инета уже рядом не было..
На счёт 32-х байт уже потом понял.

Однако легче как то не стало - 1111493779.gif - у меня по даташиту 6х16 бит -> 12x8 бит - тобто 12 байт , а в реальности - 32 - почему так wacko.gif ??
20 байт разницы......
Go to the top of the page
 
+Quote Post
vetal
сообщение Jun 22 2008, 16:10
Сообщение #29


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Цитата
почему так wacko.gif ??

доступ 32битный реализован для удобства/ простоты дешифрации . 6*16 == 8*16 ==16*8.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 22 2008, 16:40
Сообщение #30


Гуру
******

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



2 vetal -
Что-то не понял я ваших манипуляций
Цитата
6*16 == 8*16

Почему 6*16 == 8*16 ??
Но даже в таком случае - это 16 байт , а в мапе существует 32 байта для этого компонента.
crying.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 18:51
Рейтинг@Mail.ru


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