Перейти к содержанию
    

Реализовать xorshift128 на verilog

Помогите на верилоге это написать. Xorshift

/* The state array must be initialized to not be all zero */
uint32_t xorshift128(struct xorshift128_state *state)
{
	/* Algorithm "xor128" from p. 5 of Marsaglia, "Xorshift RNGs" */
	uint32_t t = state->d;

	uint32_t const s = state->a;
	state->d = state->c;
	state->c = state->b;
	state->b = s;

	t ^= t << 11;
	t ^= t >> 8;
	return state->a = t ^ s ^ (s >> 19);
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

эмм, а проблема то в чем?

	t = d;
	t ^= t << 11;
	t ^= t >> 8;
	a = t ^ a ^ (a >> 19);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, zombi said:

А зачем в алгоритме s вообще?

кодинг стайл у человека такой

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гляньте пожалуйста, не накосячил ли чего? может где перемудрил...

и инициализацию добавил.

module XorShift128
(input clk, Init, Step,
output reg [31:0]A);

reg [31:0]B,C,D;

wire [31:0] T = D ^ (D << 11) ^ (D >> 8);

always @(posedge clk)
  if (Init) begin
    D <= {32{1'b1}};
    C <= {32{1'b1}};
    B <= {32{1'b1}};
    A <= {32{1'b1}};end
  else
    if (Step) begin
      D <= C;
      C <= B;
      B <= A;
      A <= T ^ A ^ (A >> 19);
  end
endmodule

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/24/2020 at 1:02 PM, zombi said:

wire [31:0] T = D ^ (D << 11) ^ (D >> 8);

это не правильно. В исходнике не зря разнесли <<11 и >>8 в 2 присваивания :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...