Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Cortex M4 и латентност при достъп до регистър.
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=14426
Страница 1 от 1

Автор:  Nikola Kirov [ Чет Мар 10, 2016 3:07 pm ]
Заглавие:  Cortex M4 и латентност при достъп до регистър.

Преди два три дни разцъквах една платчица с Atmel cortex M3 SAM4S2. Пуснал съм го на 120 мегахерца. И ми направи впечатление голямата латентност при достъп до регистър на ADC-to.
За да го прочета в променлива само,според измерването което направих отиват 5 цикъла.
Код:
         tmp1 = ADC->ADC_CDR[4];
00402472   ldr   r3, [r2, #96]      
00402474   str   r3, [sp, #4]   


По моя сметка трябва да са 3. Достъпа до регистъра трябва да е за 2 цикъла (заради това че APB Bridge работи на половината от честотата на AHB), а записа в променливата един.
Да ама са 5 цикъла. Някой да има идея защо толкова се бави?
Да не би да има значение съответната периферия на какъв клок е пусната и APB да изчаква? Клока на ADC то е 20 МHz. Но не ми се вижда логично да е така нещо.

Автор:  miro_atc [ Чет Мар 10, 2016 3:27 pm ]
Заглавие:  Re: Cortex M4 и латентност при достъп до регистър.

Nikola Kirov написа:
Достъпа до регистъра трябва да е за 2 цикъла (заради това че APB Bridge работи на половината от честотата на AHB)


Два такта са, но не защото работи на два пъти по-ниска честота, а защото APB е мултиплексирана. Един такт адрес, един такт данни. Общо два такта на APB, ама от гледна точка на AHB-то ти изглеждат като 4 ;-)

Автор:  Nikola Kirov [ Чет Мар 10, 2016 4:20 pm ]
Заглавие:  Re: Cortex M4 и латентност при достъп до регистър.

Мерси Миро.
Много избирателно съм прехвърлил документацията явно. Въобще не бях обърнал внимание че е мултиплексирана. :)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/