Полная версия этой страницы:
Подсчет времени на NIOS II
Есть маленькая задачка для простейшего ядра Nios II. Есть датчик температуры с импульсным выходом типа ШИМ TMP05 от AD. Необходимо измерять длительность как высокго состояния (1) так и низкого (0). Потом из этих двух чисел делать пересчет типа
Temperature (°C) = 421 − (751 × (TH/TL))
Думал сделать чтобы считало по прерыванию на базе корки таймера (от фронта и среза), но не уверен в нормальной точности измерения, так как не знаю на сколько одинаково по времени в зависимости от условий будет происходить вход в прерывание.
То есть один раз войдет допустим через одно число циклов, а другой раз через другое, не равное первому.
А почему аппаратно не измерять скважность? Зачем такой ерундой проц грузить? Тем более что у Ниоса вход в прерывание программно делается я не знаю за сколько тактов. Учесть это будет сложно наверно. И вообще, можно весь подсчёт влажности по формуле сделать аппаратно. А Ниос будет читать уже вычисленное готовое значение из регистра.
Мне почему кажется, что если ниос может это сделать программно, то зачем добавлять дополнительное железо, ведь это же экстенсивный метод.
Я работал с таким датчиком по прерываниям, но из обычного проца. Из ниоса бы не стал. И вообще, софтпроцессор внутри FPGA тоже можно рассматривать как экстенсивный метод. Но, как говорится - "хозяин барин". Можно делать как хочешь. Процессор то чем нибудь нужным ещё занят?
Вообще с программным вариантом особых проблем не видно. С датчика идёт шим с периодом десятки миллисекунд, проц работает на частотах десятки мегагерц, точность датчика - не лучше процента, так что запас есть большой.
А таймер для подсчёта длительности импульсов за дополнительное железо не считается?
vadimuzzz
Dec 1 2008, 14:58
Цитата(taurus @ Dec 1 2008, 19:29)

Мне почему кажется, что если ниос может это сделать программно, то зачем добавлять дополнительное железо, ведь это же экстенсивный метод.
чтобы сделать это программно, все равно в SOPC-е придется добавить таймер => ресурсы. можно сделать свой компонент(измеритель скважности) для SOPC, по ресурсам то на то и выйдет (примерно).
Спасибо, подумаю насчет интеграции на шину Avalon варианта предложенного
vadimuzzz.
slog, тут вы конечно правы, как то не сообразил...
Тогда вопрос вдогонку: кто что может сказать относительно времени реакции на прерывание для Nios II. Ведь уже стало просто интересно
zorromen
Dec 1 2008, 17:35
Здесь найдешь.
Честно говоря может я неправильно искал, но так и не нашел вразумительного ответа по поводу расчета времени реакции на прерывание.
Где-то там.
Nios II Software Developer’s Handbook
Section III. Advanced Programming Topics
7. Exception Handling
ISR Performance Data
Table 7–1. Interrupt Performance Data (1)
Core Latency Response Time Recovery Time
Nios II/f 10 105 62
Nios II/s 10 128 130
Nios II/e 15 485 222
zorromen
Dec 2 2008, 06:28
Цитата(taurus @ Dec 2 2008, 04:15)

Честно говоря может я неправильно искал, но так и не нашел вразумительного ответа по поводу расчета времени реакции на прерывание.
Та это блин прицепил файл, а он отвалился.)))
Уже ответили. Как видишь использование Nios II/e как процессор обработки на прерывание ваще не подходит.
slog, спасибо. Как я вижу - времена фиксированные, а значит беды нету, можно их просто вычесть. Притом что на отладочной плате тактовая 50 МГц, то относительно времени измерения это вообще детская погрешность.
А насчет аппаратного измерения: тогда нам понадобится блок PIO, который тоже потянет за сомой схему дешифрации на шине авалон (не знаю правильно ли назвал схему), а на подсчет внешний тамеры все равно создавать, наверно все же проще будет попробовать подсчет времени на корке таймера, так сказать из философских убеждений. как один из возможных вариантов.
vadimuzzz
Dec 3 2008, 00:03
Цитата(taurus @ Dec 2 2008, 23:02)

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

там ничего сложного нет, главное чтоб сигналы правильно назывались

как я писал, по ресурсам это будет примерно как таймер +/- пол-лаптя (в таймере ведь тоже есть Avalon-slave). Просто при работе с таймером вы будете вынуждены работать с прерываниями, а в варианте со своим блоком прерывания опциональны. Лучше сделать оба варианта, если есть время. Для повышения ЧСВ
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.