Jump to content
    

Генератор случайных чисел на VHDL

ring и генератор случайных чисел на нем описаны в

1. Altera Advanced Synthesis Cookbook: A Design Guide for Stratix II and Stratix III Devices:

http://www.altera.com/literature/manual/stx_cookbook.pdf

http://www.altera.com/literature/manual/cookbook.zip

глава 13

 

2. http://warmcat.com/_wp/2007/11/12/ring-osc...ng-performance/ и далее по блогу

Share this post


Link to post
Share on other sites

to Gate

Большое спасибо за cookbook!! Это книга откровений от Альтеры, давно искал такую.

Может еще есть что-то подобное и от других ПЛИС-фирм?

За разъяснения по ring-генератору тоже спасибо.

Edited by 608

Share this post


Link to post
Share on other sites

Уточните, плз, слова: ринг осциллятор,.. семплируются,... ксорятся... Что это такое и как это все вместе работает? Какие частоты предпочтительней, хотябы приблизительно?

На сколько они приблизят псевдо-генератор к случайному? Что останется еще не случайным?

 

Тоже много специфики, не все понятно.. Есть ли ссылки на статьи и фирмы?

1. обычно RNG не делают на плисах. причин - много, в т.ч. сомнительное пратическое применение

2. проще сделать (если уж плис) генератор используя ринг осциляторы (Ring Oscillator - не четное количество инвертором замкнутых в цикл)/ тут http://rapidshare.com/files/110208435/rnd_fpga_doc.ZIP.html закинул литературу о реализации на плисах; если прохой аутпут (лучше тестить AIS31), используй постпроцесинг (Von Neimann), если тебя не волнует сертификация твоего-же генератора (AIS31); если попроще тестить, то рекомендую полный FIPS140/2 и spectrum test с пакета NIST STS

3. чтобы получить нормальный генератор случайных чисел, надо его делать в asic, поскольку в плис уж очень много шумов и т.д., которые так или иначе влияют на выход генератора, сложность разработки ы т.д..., но это тебе вроде не надо

успехов

Share this post


Link to post
Share on other sites

Исходные тексты всем выслал. При необходимости - пишите в личку.

 

Из основных ограничений (для меня) сразу отмечу формирование одного выходного отсчета на четыре тактовых импульса - возможна доработка с ростом ресурсов ПЛИС, но для данной задачи это вполне приемлемо. В любом случае - спасибо автору за бесплатный пример, что встречается далеко не часто.

 

Здравствуйте, kiss!

 

Был бы очень Вам признателен, если вы пришлете мне VHDL описание такого генератора, если конечно у Вас есть ещё такая возможность. Я проектирую декодер сверточного турбокода, вышел на стадию тестирования и теперь вот возникла необходимость моделирования канала АБГШ, т.е. впринципе, мне даже не нужна синтезируемая реализация, хочу попробовать использовать такой генератор в тест-бенче для моделирования искажения передаваемого сигнала.

 

Заранее Вам благодарен!

Share this post


Link to post
Share on other sites

Пришлите, ПОЖАЛУЙСТА книжку(или ссылку), если у кого есть! :

 

Иванов М.А., Чугунков И.В. Теория, применение и оценка качества генераторов псевдослучайных последователь-ностей. – М.: КУДИЦ-ОБРАЗ, 2003. – 240 с.

 

не могу никак в эл.виде найти!(только 3-ю главу нашла),,через BooksClient не скачивается((

а если заказывать, то ждать долго..

 

Буду оч признательна за любую инфу по ГПСЧ))): [email protected]

 

мне это все для курсовика по генераторам псевдослучайных чисел..))

Share this post


Link to post
Share on other sites

Подскажите, есть ли в VHDL функция (RAND ?) псевдослучайной выдачи в сигнал либо лог'0' либо лог'1'? Нужно для красивого тестбенча, синтезируемость не нужна.

 

Помогите разобраться с примером, приводимым тут http://www.velocityreviews.com/forums/t224...-generator.html

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.math_real.all;

entity psuedo_random_number is
port(
ld : in std_logic;
clk : in std_logic;
result : out std_logic_vector(7 downto 0)
);
end entity psuedo_random_number;

architecture psuedo_random_number of psuedo_random_number is


begin

process(clk, ld)
variable s1 : positive := 234; -- Set to some seed value
variable s2 : positive := 567; -- Set to some seed value
variable randNum : real; -- Where the random number will be set
variable slv : std_logic_vector(7 downto 0);
begin
uniform(s1, s2, randNum); -- Sets randNum to a value between 0.0 and under 1.0

randNum := randNum * 10.0; -- randNum has a value between 0.0 and under 10
randNum := floor(randNum) + 3.0; -- randnum has a value between 3.0 and 12.0 (without fraction)
slv := std_logic_vector(to_unsigned(integer(randNum), 8)); -- Convert to std_logic_vector

if clk'event and clk = '1' and ld = '0' then
result <= slv;
end if;
-- All in one line
--slv := std_logic_vector(to_unsigned(integer(floor(randnum * 256.0)), 8)); -- random data
end process;

end architecture psuedo_random_number;

 

 

 

 

Share this post


Link to post
Share on other sites

Подскажите, есть ли в VHDL функция (RAND ?) псевдослучайной выдачи в сигнал либо лог'0' либо лог'1'? Нужно для красивого тестбенча, синтезируемость не нужна.

В чем конкретно вопрос? Что именно не понятно? Приведенное описание работает?

Share this post


Link to post
Share on other sites

есть ли в VHDL функция (RAND ?) псевдослучайной выдачи

..
use ieee.math_real.all;
..
uniform(s1, s2, randNum); -- Sets randNum to a value between 0.0 and under 1.0
...

для тестбенча самое оно :laughing:

Share this post


Link to post
Share on other sites

для равномерного распределения мы использовали и тестировали вот этот генератор с некоторыми модификациями:

http://opencores.org/project,systemc_rng

 

При тестировании с помощью diehard test battery генератор не прошел 1 тест (Random spheres test или Parking lot test, история не сохранила), что, в общем, не плохо для довольно гуманного по ресурсам генератора.

 

Что касается заданного закона распределения - генератор с таким распределением получается путем нелинейных преобразований последовательности с равномерным законом. В книге "Гнеденко Б. В. - Курс теории вероятностей." это хорошо описано.

 

Успехов

Share this post


Link to post
Share on other sites

Народ, нужна программа на VHDL, описывающая работу генератора псевдослучайных чисел, если у кого есть. скиньте пожалуйста на [email protected] Очень нужно!

Share this post


Link to post
Share on other sites

Здраствуйте, не подскажете где можно найти код или структурную схему (желательно с описанием) генераторо шума с гауссовским распределением.

Share this post


Link to post
Share on other sites

Это же надо было так слово исковеркать!

 

Надо открыть тему технический язык, для обсуждения подобного рода проблем, а то народ уже совсем говорить разучился. :a14:

Меня тоже допекло из статей, присланных на рецензию подобные "продвинутые решения" вырезать...

Так что у меня теперь на сайте выложен "толковый словарь офисно-спекулянтской фени"... А еще в этом же стиле - "Новые решения в обвязке продуктовых линеек"...

Беда только в том, что люди не понимают, когда им об этом говоришь. Ну, так же, как и в этом случае...

Share this post


Link to post
Share on other sites

Здраствуйте, не подскажете где можно найти код или структурную схему (желательно с описанием) генераторо шума с гауссовским распределением.

Предельная теорема (есть такая) утверждает, что если складывать сами с собой случайные числа с произвольным распределением(с некоторой дисперсией), то в конце концов... получится само собой то, о чем Вы спрашиваете.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...