Bitcoin Forum
July 09, 2024, 03:35:07 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: FPGA  (Read 1579 times)
lordfantom (OP)
Newbie
*
Offline Offline

Activity: 43
Merit: 0


View Profile
April 23, 2013, 08:49:56 AM
 #1

Интересует вопрос запуска ядра  SHA 256
например вот от сюда https://github.com/fpgaminer/Open-Source-FPGA-Bitcoin-Miner/tree/master/cores/unoptimized
на ModelSim

интересуюсь в плане изучения Verilog
lordfantom (OP)
Newbie
*
Offline Offline

Activity: 43
Merit: 0


View Profile
April 24, 2013, 07:40:56 AM
 #2

ну что никто на Verilog не пишет что ли ))
нужно то вот этот модуль отрисовать )))


module sha256_digester (clk, k, rx_w, rx_state, tx_w, tx_state);

input clk;
input [31:0] k;
input [511:0] rx_w;
input [255:0] rx_state;

output reg [511:0] tx_w;
output reg [255:0] tx_state;


wire [31:0] e0_w, e1_w, ch_w, maj_w, s0_w, s1_w;


e0   e0_blk   (rx_state[`IDX(0)], e0_w);
e1   e1_blk   (rx_state[`IDX(4)], e1_w);
ch   ch_blk   (rx_state[`IDX(4)], rx_state[`IDX(5)], rx_state[`IDX(6)], ch_w);
maj   maj_blk   (rx_state[`IDX(0)], rx_state[`IDX(1)], rx_state[`IDX(2)], maj_w);
s0   s0_blk   (rx_w[63:32], s0_w);
s1   s1_blk   (rx_w[479:448], s1_w);

wire [31:0] t1 = rx_state[`IDX(7)] + e1_w + ch_w + rx_w[31:0] + k;
wire [31:0] t2 = e0_w + maj_w;
wire [31:0] new_w = s1_w + rx_w[319:288] + s0_w + rx_w[31:0];


reg [511:0] w_buf = 0, w_buf2 = 0;
reg [255:0] state_buf = 0, state_buf2 = 0;


always @ (posedge clk)
begin
w_buf[511:480] <= new_w;
w_buf[479:0] <= rx_w[511:32];

state_buf[`IDX(7)] <= rx_state[`IDX(6)];
state_buf[`IDX(6)] <= rx_state[`IDX(5)];
state_buf[`IDX(5)] <= rx_state[`IDX(4)];
state_buf[`IDX(4)] <= rx_state[`IDX(3)] + t1;
state_buf[`IDX(3)] <= rx_state[`IDX(2)];
state_buf[`IDX(2)] <= rx_state[`IDX(1)];
state_buf[`IDX(1)] <= rx_state[`IDX(0)];
state_buf[`IDX(0)] <= t1 + t2;

{w_buf2, state_buf2} <= {w_buf, state_buf};
{tx_w, tx_state} <= {w_buf2, state_buf2};
end
Xtc
Legendary
*
Offline Offline

Activity: 1972
Merit: 1028


;u


View Profile WWW
April 24, 2013, 11:26:45 AM
 #3

Quote
ну что никто на Verilog не пишет что ли ))
Видимо только на VHDL  Grin
lordfantom (OP)
Newbie
*
Offline Offline

Activity: 43
Merit: 0


View Profile
April 24, 2013, 12:38:56 PM
 #4

вот оно че Михалыч  Grin


s018.radikal.ru/i514/1304/a1/1f680cb0fd19.jpg

http://s018.radikal.ru/i514/1304/a1/1f680cb0fd19.jpg
legonxt
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
April 25, 2013, 02:04:19 PM
 #5

Quote
ну что никто на Verilog не пишет что ли ))
Видимо только на VHDL  Grin
а какой-нить другой проект на фпга перенести ктонить возьмется? у меня даже исходники примерочные какие-то есть. и ФПГА. Smiley
lordfantom (OP)
Newbie
*
Offline Offline

Activity: 43
Merit: 0


View Profile
April 26, 2013, 03:46:31 AM
 #6

Исходник на чем написан Huh?
asion
Newbie
*
Offline Offline

Activity: 24
Merit: 0


View Profile
April 27, 2013, 10:38:16 AM
 #7

lordfantom, какие результаты получились?
lordfantom (OP)
Newbie
*
Offline Offline

Activity: 43
Merit: 0


View Profile
May 09, 2013, 01:32:42 PM
 #8

Результат один для куска SHA256 а их там 8 штук (DIGESTER)
требуется около 3500 ЛЯ
Spartan-6 LX9 или LX9  как раз подходит )))
остается их только собрать как то вместе )))

asion
Newbie
*
Offline Offline

Activity: 24
Merit: 0


View Profile
May 09, 2013, 08:52:41 PM
 #9

Хм, всего 3к5 лялов... Я для альтеры собирал прожект с опенсорсного фпгаминера, который для DE-115, так там >70К вышло. Не разбирался правда почему )
lordfantom (OP)
Newbie
*
Offline Offline

Activity: 43
Merit: 0


View Profile
May 10, 2013, 06:16:49 PM
 #10

Все правильно для  запуска только ядра SHA 256 надо 28 к ЛЯ )))
в битке их два + простой RS232 )))

идея в том что бы разделить модули ( 8 штук ) на разные физ FPGA (желательно дешевые)
+ поднятие частоты
asion
Newbie
*
Offline Offline

Activity: 24
Merit: 0


View Profile
May 10, 2013, 06:28:40 PM
 #11

Так гелионовский fast hash core для циклона 1281 LEs юзает, если даташиту верить. чето гдето не вьезжаю )
lordfantom (OP)
Newbie
*
Offline Offline

Activity: 43
Merit: 0


View Profile
May 10, 2013, 07:19:08 PM
 #12

заместо SPARTAN 6 LX 150
8 LX 4 или 9 так понятно
asion
Newbie
*
Offline Offline

Activity: 24
Merit: 0


View Profile
May 10, 2013, 08:22:45 PM
 #13

Это то понятно. я про другое..
rPman
Legendary
*
Offline Offline

Activity: 1120
Merit: 1069


View Profile WWW
May 11, 2013, 06:06:58 AM
 #14

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

Здесь не может находиться ваша реклама Smiley
Protect a future of bitcoin, use p2pool
Donation in BTC: 19fv5yYtfWZ9jQNjx2ncmu1TTrvg5CczZe
asion
Newbie
*
Offline Offline

Activity: 24
Merit: 0


View Profile
May 11, 2013, 12:05:32 PM
 #15

незнаю, на фришное мыло неотвечают, а корп увидят темболее пошлют)
lordfantom (OP)
Newbie
*
Offline Offline

Activity: 43
Merit: 0


View Profile
May 14, 2013, 02:26:06 AM
 #16

один DIGESTER

http://s40.radikal.ru/i089/1305/d4/50a9dceddeb0.jpg
lordfantom (OP)
Newbie
*
Offline Offline

Activity: 43
Merit: 0


View Profile
May 15, 2013, 04:50:35 AM
 #17

Все таки радужные таблицы на sh256 это конечно фантастика
но вот на digester(кусок алгоритма ) это вполне возможно
  т.е.надо перебрать все варианты 64 слов по 32 бита
пропущенные через функцию

 Основной цикл:
    для i от 0 до 63
        Σ0 := (a rotr 2) xor (a rotr 13) xor (a rotr 22)
        Ma := (a and b) xor (a and c) xor (b and c)
        t2 := Σ0 + Ma
        Σ1 := (e rotr 6) xor (e rotr 11) xor (e rotr 25)
        Ch := (e and f) xor ((not e) and g)
        t1 := h + Σ1 + Ch + k + w

        h := g
        g := f
        f := e
        e := d + t1
        d := c
        c := b
        b := a
        a := t1 + t2

притом что коллизи будут , вопрос сколько их
asion
Newbie
*
Offline Offline

Activity: 24
Merit: 0


View Profile
May 17, 2013, 05:12:56 AM
 #18

2^32 вариантов *4 байта /1024/1024/1024 это 16 гигов 1 табла.
предварительно посчитать можем только
#define Sig0(x)    (S(2,x)^S(13,x)^S(22,x))
#define Sig1(x)    (S(6,x)^S(11,x)^S(25,x))
#define theta0(x)  (S(7,x)^S(18,x)^R(3,x))
#define theta1(x)  (S(17,x)^S(19,x)^R(10,x))
где
#define S(n,x) (((x)>>n) | ((x)<<(32-n)))
#define R(n,x) ((x)>>n)

итого 64гб нужно держать в памяти, так как нужна скорость. Можно конечно попробовать пейджфайл раздуть и сунуть его на шустрый ссд винт, тогда много физ. оперативы не надо.

з.ы. имхо


Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!