/ / Implementacja losowej sieci Boolean w Verilog - random, boolean, verilog

Implementacja losowej sieci Boolean w Verilog - random, boolean, verilog

Chcę wdrożyć sieć Boolean w FPGA. Oświadczenie dotyczące sieci Boolean podano poniżej.

Losowa sieć Boolean składa się z N losowopołączonych węzłów, z których każdy ma stan binarny: włączony lub wyłączony (1 lub 0). W sieciach NK każdy węzeł otrzymuje dokładnie K wejść wybranych losowo z innych węzłów w sieci i w większości przypadków dozwolone jest samo połączenie (rysunek 1 pokazuje przykład topologii RBN).

Przykład RBN

Stan każdego węzła w sieci w czasie t + 1jest określany przez stany jego wejść w czasie t przez losowo wygenerowaną funkcję logiczną, którą można przedstawić za pomocą tabeli przeglądowej dla każdego węzła (patrz tabela 1). Zazwyczaj funkcje Boolean nie zmieniają się przez cały okres istnienia sieci. W RBN funkcja Boolean dla każdego węzła mapuje każdą z 2 możliwych kombinacji wejściowych do stanu wyjściowego 0 lub 1.

Sieć otrzymuje losowy stan początkowy wedługprzypisanie każdemu węzłowi wartości 0 lub 1. Wartość każdego węzła w następnym kroku jest określana przy użyciu stanu jego wejść i funkcji Boolean każdego węzła.Wszystkie węzły są aktualizowane w tym samym czasie (synchronicznie). Stan sieci jest generowany, a następnie używany do określenia następnego stanu itd. Przykład aktywności sieciowej przedstawiono na rysunku.

Przykładowa aktywność sieci

Naprawdę chcę to wdrożyć w verilogu. Czy ktoś może mi podać trochę szczegółów na temat RBN?

po przeczytaniu całego oświadczenia oBoolean Network, mogę podzielić mój problem na trzy etapy, które są Najpierw chciałbym zaimplementować sieć binarną z zadaną funkcją węzła. Po drugie, chcę zaimplementować losowy blok funkcyjny. Po trzecie - połącz oba. BTW

generować inną sieć za każdym razem po zresetowaniu lub w czasie kompilacji

Odpowiedzi:

0 dla odpowiedzi № 1

Losowa funkcja boolowska f(d_0, d_1,..,d_(k-1) ) może być reprezentowany jako 2^k do 1 multiplekser z 2^k losowe dane wejściowe i k "wybierz" wejścia wybrane z N wyjścia innych multiplekserów. Jeśli chodzi o wymagania dotyczące czasu, umieść zaczepy na liniach. Wylosowałem dla ciebie podstawowy blok Twojej sieci:

Podstawowy blok RBN

Będziesz potrzebował takich N bloków ze sobą połączonych Q"s. Będziesz musiał wdrożyć połączeniegenerator "N wybierz K", na podstawie wejścia reprezentującego numer wyboru, i podłącz górne wejścia do jakiegoś generatora liczb losowych (czas kompilacji lub nie, twój wybór).