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

 
 
> Генератор шума на AVR, Как сделать на ASM
Nanobyte
сообщение Dec 4 2006, 20:14
Сообщение #1


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Здравствуйте, коллеги.
Необходимо генерировать шумовой сигнал на одном из выводов МК. Как я понимаю, используя генератор псевдослучайных чисел, можно получить требуемый результат. Разрядность числа вполне устроит 16 бит. Поиск по форуму даёт реализации только на Си.
Вопрос: как это сделать, используя ассемблер? Может, кто нибудь из Вас уже делал такой ГПСЧ ?
Спасибо.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Bill
сообщение Dec 5 2006, 10:27
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Nanobyte @ Dec 4 2006, 20:14) *
Здравствуйте, коллеги.
Необходимо генерировать шумовой сигнал на одном из выводов МК. Как я понимаю, используя генератор псевдослучайных чисел, можно получить требуемый результат. Разрядность числа вполне устроит 16 бит. Поиск по форуму даёт реализации только на Си.
Вопрос: как это сделать, используя ассемблер? Может, кто нибудь из Вас уже делал такой ГПСЧ ?
Спасибо.

Я сделал генератор ПСЧ на 31 бит так:
Код
    name    Rand
;
;
;    File:    rand.s90
;
;    08-Sep-05 BK    Initial edit
;    28-Sep-05 BK    Last  update
;
$fmacros.inc

    rseg    CODE    ; Code segment
;
;
    ENTRY$    Rand
    ldi    r30, LOW(_rand)     ; Point at random number
    ldi    r31, HIGH(_rand)    ;
    tst    r16            ; See the seed value
    breq    _1              ; Branch if zero

    clr    r17            ; Initialize the generator
    clr    r18            ; and return initial value
    clr    r19            ;
    rjmp    _2                 ;

_1:    ; Calculate new random number
    ld    r16, Z        ; Load the previous value into registers
    ldd    r17, Z+1        ;
    ldd    r18, Z+2        ;
    ldd    r19, Z+3        ;
    eor    r16, r19         ; Calculate feedback bit
    bst    r16, 6                 ;
    eor    r16, r19            ;
    lsl    r16             ; Shift the number left
    rol    r17            ;
    rol    r18            ;
    rol    r19            ;
    andi    r19, ~(1<<7)     ; Clear high (sign) bit
    bld    r16, 0        ; Insert feedback bit in the new value
_2:    st    Z,   r16          ; Save the number
    std    Z+1, r17        ;
    std    Z+2, r18        ;
    std    Z+3, r19        ;
    ret

    rseg    NEAR_Z    ; Data segment
    
_rand:        ; Random number
    ds    4    ;

    end
Go to the top of the page
 
+Quote Post
Oldring
сообщение Dec 5 2006, 11:01
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(_Bill @ Dec 5 2006, 10:27) *
Я сделал генератор ПСЧ на 31 бит так:
Код
    eor    r16, r19        ; Calculate feedback bit
    bst    r16, 6                ;
    eor    r16, r19        ;


Хотите сказать, что полином 0x80000041 примитивный?
Кроме того, Вы используете из результата на каждой итерации 1 бит или 31?


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
_Bill
сообщение Dec 5 2006, 11:35
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Oldring @ Dec 5 2006, 11:01) *
Цитата(_Bill @ Dec 5 2006, 10:27) *

Я сделал генератор ПСЧ на 31 бит так:
Код
    eor    r16, r19    ; Calculate feedback bit
    bst    r16, 6            ;
    eor    r16, r19    ;


Хотите сказать, что полином 0x80000041 примитивный?
Кроме того, Вы используете из результата на каждой итерации 1 бит или 31?

Вообще-то, на каждой итерации я использую все 31 бит. Что касается полинома, то я взял номера отводов из таблицы, приведенной в статье "Генеатор белого шума на сдвигающем регистре с обратной связью" (Электроника, №11, 1976). Там имеется ссылка на: S.Golomb "Shift Register Sequences", 1967.
Для 31-разрядного регистра имеется несколько вариантов включения: x30 + x2, x30 + x5, x30 + x6, x30 + x12. Я выбрал варианте x30 + x6, поскольку не требуется дополнительных сдвигов для выравнивания разрядов.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Dec 5 2006, 11:42
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(_Bill @ Dec 5 2006, 11:35) *
Вообще-то, на каждой итерации я использую все 31 бит.


Тогда это очень предсказуемый генератор. Потому что с вероятностью 1/2 очередное число ровно в 2 раза больше предыдущего.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
_Bill
сообщение Dec 5 2006, 12:33
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Oldring @ Dec 5 2006, 11:42) *
Цитата(_Bill @ Dec 5 2006, 11:35) *

Вообще-то, на каждой итерации я использую все 31 бит.


Тогда это очень предсказуемый генератор. Потому что с вероятностью 1/2 очередное число ровно в 2 раза больше предыдущего.

Согласен, надо брать 1 бит. И считать количество 1-бит на некотором разряде за определенное количество циклов, скажем, за 256.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Dec 5 2006, 12:35
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(_Bill @ Dec 5 2006, 12:33) *
И считать количество 1-бит на некотором разряде за определенное количество циклов, скажем, за 256.

Это зачем?


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
_Bill
сообщение Dec 5 2006, 14:14
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Oldring @ Dec 5 2006, 12:35) *
Цитата(_Bill @ Dec 5 2006, 12:33) *

И считать количество 1-бит на некотором разряде за определенное количество циклов, скажем, за 256.

Это зачем?

Для получения случайных чисел с равномерным распределением в диапазоне 0 .. 255. Или нет?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Nanobyte   Генератор шума на AVR   Dec 4 2006, 20:14
- - beer_warrior   Смотреть надо реализацию для писюков или дизассемб...   Dec 4 2006, 20:35
- - aaarrr   Цитата(Nanobyte @ Dec 4 2006, 20:14) Поис...   Dec 4 2006, 20:51
|- - Nanobyte   Цитата(aaarrr @ Dec 4 2006, 21:51) Неужел...   Dec 4 2006, 21:00
- - aaarrr   Почему? Восстанавливаем алгоритм -> реализуем н...   Dec 4 2006, 21:06
|- - Nanobyte   Цитата(aaarrr @ Dec 4 2006, 22:06) Почему...   Dec 4 2006, 21:08
|- - muravei   Цитата(aaarrr @ Dec 4 2006, 21:06) Почему...   Dec 4 2006, 21:31
- - antoker   Цитата(Nanobyte @ Dec 4 2006, 20:14) Здра...   Dec 4 2006, 21:11
|- - antoker   небольшая добавочка к моему предыдущем посту (пока...   Dec 4 2006, 21:22
||- - Nanobyte   Цитата(muravei @ Dec 4 2006, 22:31) Чего ...   Dec 4 2006, 21:48
|- - Nanobyte   Цитата(antoker @ Dec 4 2006, 22:11) А как...   Dec 4 2006, 21:29
||- - Oldring   Цитата(Nanobyte @ Dec 4 2006, 21:29) И ещ...   Dec 4 2006, 22:03
||- - Nanobyte   Цитата(Oldring @ Dec 4 2006, 23:03) И. кс...   Dec 4 2006, 22:12
|- - Oldring   Цитата(antoker @ Dec 4 2006, 21:11) 1. бе...   Dec 4 2006, 22:16
|- - Nanobyte   Цитата(Oldring @ Dec 4 2006, 23:16) Тогда...   Dec 4 2006, 22:28
||- - singlskv   Цитата(Nanobyte @ Dec 4 2006, 22:28) 2. П...   Dec 5 2006, 02:12
||- - Nanobyte   Цитата(singlskv @ Dec 5 2006, 03:12) Нет,...   Dec 5 2006, 02:28
||- - singlskv   Цитата(Nanobyte @ Dec 5 2006, 02:28) Цита...   Dec 5 2006, 02:55
|||- - Oldring   Цитата(singlskv @ Dec 5 2006, 02:55) А то...   Dec 5 2006, 11:16
||- - Oldring   Цитата(Nanobyte @ Dec 5 2006, 02:28) Ну п...   Dec 5 2006, 10:00
||- - singlskv   Цитата(Oldring @ Dec 5 2006, 10:00) Если ...   Dec 5 2006, 15:04
|- - antoker   Цитата(Oldring @ Dec 4 2006, 22:16) И раз...   Dec 5 2006, 00:42
- - aaarrr   Цитата(Nanobyte @ Dec 4 2006, 21:29) И ещ...   Dec 4 2006, 21:42
- - Oldring   Это означает, что если значение очередного бита ра...   Dec 4 2006, 22:39
|- - Nanobyte   Цитата(Oldring @ Dec 4 2006, 23:39) Интер...   Dec 4 2006, 22:48
- - Oldring   Цитатаldi r19, #87h lsl r16 sbrc r18, 7 eor r16...   Dec 4 2006, 22:58
|- - Nanobyte   Цитата(Oldring @ Dec 4 2006, 23:58) Как г...   Dec 4 2006, 23:07
- - add   Странно что поиск ничего не дал?! http://ele...   Dec 5 2006, 09:39
|- - Nanobyte   Цитата(add @ Dec 5 2006, 10:39) Странно ч...   Dec 5 2006, 12:25
- - Oldring   Цитата(_Bill @ Dec 5 2006, 14:14) Цитата(...   Dec 5 2006, 18:56
- - singlskv   Цитата(Oldring @ Dec 5 2006, 18:56) Где-т...   Dec 5 2006, 20:54


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:48
Рейтинг@Mail.ru


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