. . . .
Tadpole on FPGA
mapping floating-point equations into integers using code-generation Mike Hull
Computer Laboratory University of Cambridge
19th Dec. 2013
() Tadpole on FPGA 19th Dec. 2013 1 / 20
Tadpole on FPGA mapping floating-point equations into integers - - PowerPoint PPT Presentation
. Tadpole on FPGA mapping floating-point equations into integers using code-generation . . . Mike Hull Computer Laboratory University of Cambridge 19th Dec. 2013 () Tadpole on FPGA 19th Dec. 2013 1 / 20 The tadpole Ph.D in modelling
() Tadpole on FPGA 19th Dec. 2013 1 / 20
() Tadpole on FPGA 19th Dec. 2013 2 / 20
1Parker, J Physiol 2009
() Tadpole on FPGA 19th Dec. 2013 3 / 20
() Tadpole on FPGA 19th Dec. 2013 4 / 20
pA
µm2
cm/s
C/mol
i −
mmol/liter
() Tadpole on FPGA 19th Dec. 2013 5 / 20
() Tadpole on FPGA 19th Dec. 2013 6 / 20
() Tadpole on FPGA 19th Dec. 2013 7 / 20
() Tadpole on FPGA 19th Dec. 2013 8 / 20
define_component gap_junction { <= > PARAMETER g_gj : ( S) <= > INPUT V1 : ( V) , V2 : ( V) i 1 = g_gj ∗ (V2−V1) i 2 = −i 1 } () Tadpole on FPGA 19th Dec. 2013 9 / 20
define_component gap_junction { <= > PARAMETER g_gj : ( S) <= > INPUT V1 : ( V) , V2 : ( V) i 1 = g_gj ∗ (V2−V1) i 2 = −i 1 } define_component p a s s i v e _ c e l l { <= > TIME t <= > PARAMETER g_leak C = 10pF V’ = ( i _ l e a k + i _ i n j + i_syn ) / C # Leak Channel : i _ l e a k = {2nS} ∗ ({−64mV} − V) # I n j e c t e d Current : i _ i n j = [30pA ] i f [50ms < t < 100ms ] e l s e [0 pA ] # Synapse : i_syn = {300pS} ∗ ({0mV} − V) ∗ (B−A) A’ = −A / {1.5ms} B’ = −B / {5ms}
A = A + 1 B = B + 1 } } () Tadpole on FPGA 19th Dec. 2013 9 / 20
() Tadpole on FPGA 19th Dec. 2013 10 / 20
U 2U Min-Value Max-Value
3.9e-3 3.9e-3
· · ·
0.0625
0.0625
0.125
0.125
0.25
0.25
0.5
0.5 1
1.0 1 2
2.0 2 4
4.0 · · · 8 256
256 () Tadpole on FPGA 19th Dec. 2013 11 / 20
U 2U Min-Value Max-Value
3.9e-3 3.9e-3
· · ·
0.0625
0.0625
0.125
0.125
0.25
0.25
0.5
0.5 1
1.0 1 2
2.0 2 4
4.0 · · · 8 256
256
() Tadpole on FPGA 19th Dec. 2013 11 / 20
() Tadpole on FPGA 19th Dec. 2013 12 / 20
f o r ( i n t i =0; i <NrnPopData : : s i z e ; i ++){ // . . . d . i _ l e a k [ i ] = ( ScalarOp <−31>::mul ( ScalarType <−28>(5629500), // [ Constant 2.5 e −9] ScalarOp <−3>::sub ( ScalarType <−4>(−6710886), // [ Constant −0.05] d .V[ i ] ) ) ) ; // . . . } () Tadpole on FPGA 19th Dec. 2013 12 / 20
() Tadpole on FPGA 19th Dec. 2013 13 / 20
network = Network () dIN_comp = n e u r o u n i t s . ComponentLibrary . instantiate_component ( ’dIN ’ ) dINs = network . c r e a t e _ p o p u l a t i o n ( name=’ dINs ’ , component=dIN_comp , s i z e =30, parameters= {’ nmda_multiplier ’ :
’ ampa_multiplier ’ : 1.0 , ’ inj_current ’ : ’20 pA ’ }) network . c r e a t e _ e v e n t p o r t c o n n e c t o r ( name=" dIN_dIN_NMDA " , s r c _ p o p u l a t i o n=dINs , dst_population=dINs , src_port_name=’ spike ’ , dst_port_name=’ recv_nmda_spike ’ , d e l a y=’1 ms ’ , connector=AllToAllConnector ( 0 . 2 ) , parameter_map= {’ weight ’ : " 150 pS " }) network . r e c o r d _ t r a c e s ( dINs , ’V ’ ) r e s u l t s = CBasedEqnWriterFixedNetwork ( network ,
CPPFLAGS=’- DON_NIOS = false
’ , s t e p _ s i z e =0.1e −3, r u n _ u n t i l =1.0 , a s _ f l o a t=F a l s e ) . r e s u l t s () Tadpole on FPGA 19th Dec. 2013 14 / 20
() Tadpole on FPGA 19th Dec. 2013 15 / 20
() Tadpole on FPGA 19th Dec. 2013 16 / 20
() Tadpole on FPGA 19th Dec. 2013 16 / 20
() Tadpole on FPGA 19th Dec. 2013 17 / 20
() Tadpole on FPGA 19th Dec. 2013 18 / 20
() Tadpole on FPGA 19th Dec. 2013 18 / 20
() Tadpole on FPGA 19th Dec. 2013 18 / 20
() Tadpole on FPGA 19th Dec. 2013 19 / 20
() Tadpole on FPGA 19th Dec. 2013 20 / 20