From 446af340c8d6cf47da45b05440d0a1a6ecd7ba5c Mon Sep 17 00:00:00 2001 From: Johannes Wirth Date: Wed, 10 Nov 2021 09:51:19 +0100 Subject: [PATCH] fpga_spn: use separate reset for DMA --- fpga_spn/raven_spn | Bin 270524 -> 270888 bytes fpga_spn/src/init.h | 19 +++++++++++++------ fpga_spn/src/raven_spn.cpp | 22 +++++++++++++++++----- raven_spn/raven_spn | Bin 124788 -> 124136 bytes 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/fpga_spn/raven_spn b/fpga_spn/raven_spn index 4cd2606a421f1437ce0f558e2eb6d7b98776b998..5ccb240f3cc99eb53f7346ea2428701aa1c253ea 100755 GIT binary patch delta 14066 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 delta 13506 zcmb7K30#!b+JE13W}g9u#Q~8Sh8@um0ToeUL_{Z1Jo>jI*yNg`aia>ObrK zr%`~}KisrS9=KrOS!b4WwsYlun{Ic`u(658O~+#2wM9*S&^Yj{w9>ICZP%5>=7Pm2 z#{@Q~L(&XboqvVKOykpVXa|eD4bWQiV zb`MPQUbwNsVhXC#7Dva_Ajni9iGci%RXmL{cUG%QLhz7n@{WG0n%p)^pT)uVK$QZk@4S>^s2w^McWdL*Dv+wGK&lfIg<_OGXfg6TN{a`@?cCAlb8x97OXq!6#l}es>n7Z`eZ% zNq0UuC@Gyp44TM5P}knEY-*svd>cY?`H@YVGR$)6?|snV%ZpNXUEyiY^x$ns?oMh7se{M4W#Q>3wVcg5rW@)vM~6s`K0=RU>&)U~c#OSlY{hU%MBv$tO4EXa7r({ zN$w4DX5fk3r(9F-UOGVS^7p>(xLzEgQJQwwrZGMIOkNoHtXGb_C}7KbF>-G8BNwDa z>y}Bzpok{tcHb7*llNZOEtnFW!uP8*^DTj<-tp1XBdt+Vl3^n|D`my>+aZp;a~xyz zmcZfOceCATn}+6hl;y#JDShqdDhZ-U%A zFspB2crR6QhbB2Sd(*bQU6>pm_^H4h9$x+MFOs8pzwVkN5L1{CUEk8Oi?h##{h+q3 z;mD@4!Y@toQ-Q7}gXMn&=9Y|;R|gK3tdJiJj2|>WUJ+P3=nuBLXj4<^4~#u`FtFtM zf%5g6_FW&(PJyg)i~L!jcX=AKd>W`K zPn6FG7MG``#(sMBYAmIpqEKhiQn|=sk;?Wsn6oHUlDr^a#N+%l@Je}X;8eLKvn#}N zDR~uzW)&}xmoie|sq&5@C}ok7Bw)vGr% zfTGZ{60)$2D>jBQ#YS1t2d!52K>kGF=TS+&LS zmr`1a(i=+YC6v}HrGqG~QA!t3x}Qp>7%oZoH3x3K!DH-;Vy!})h|WBqiliyZfB>n*JQU#@>5oV8T;R~?cw-$(CzR4Uls-{Pdr*2` zDV;)TOJLHNc%u`EZM{OvMQKf-KXk{Uv^22bhIr$Al$HdZxgp844yF5!1U|aK6SW7$ z(hCSDyrJL0OLE=DM!R(ppBUs52SLS>u_}qDe*t`;BMkJnW~i zV7Ga!(Imerb}V3P+{v6-ZIWyZ|gM%9t!x5Y-??`Ac@p(P#Bu58-sb^2hawj2{urJx( zPGU|2>%z`=5>Ga;B-tt6YhYb%*>OHE{}go$5ZWH{!%0ysdkPf1PYBCUysl$>@=c>{y(LUB(jG`8ZL4w`>uUmZ4sc zSWK@h@jShX#r|ceV5}Pk4xxe)k+6()5YFYyB-e`QqG$u`BRO6a_0-SGg#7%L+Ipj}89)0rs3M zJ4DY1*-vs_FkvOTM`r8egH4Srfyu*z+X8F^W2<@x!&b2YoR#H^cLK~CobxDKDYK@0 z@!$i@CE^}q&1_$O@Ylx}H^^DRKmNh`+2vTVU;~Q_R=mi%8s*p^05gDCznQ(oPGkoA zzs_nId$XH(HOT5i3%f~@d9Qnw3B%t!O!VKvI?Bt%Op|8_cWBn%*vabC$+~H;JC3Z|hh+lnbC&=l z+q2972SR25q}!K^s$E)zCapsI+~D3_tiq~SG!E&4qoUw-AF)UiJKQZ;^a=Zxv*Vpb zdNWJMJ6PV#YGpVW-2OScU1pzT1#`b-qh%6Vaa0v~{ir6AbW9Tw$Jx^?G`>4Fa`$#X z6$Zo6Y*BiGrBGvLpI~#8P@Vi%YmDo|&XeNM7#B6h^-A^{~>p!O5{aG$dqw zGCZ<73!@}ys;SqSL8MJFi*i!SKcul^gf|)VXrUA zZc%sTwa*~RHz_}Ts}sWrSndRQ7vBn-WlKxR(Nsps3%abak%@7M65h$h&<{f zddgVtsZY@fL9#r?lLwQk#Br+lMo$FjD&bYKc(W%QUa5p}q*CQ!NjhO0SjH)y)2OVo zDl(C(nc<0Qskf9IndQkw6BUVyLeZ@=?_i3Dt@4gyNN2eID43>Ly;5lLv4u3 z<38HrL=g;{65Zok2&E{QQawvCc2ytN!f#WC=XShQ!bU{glE;k@T<~+q8bjY1BV$N3(I;0SFoBQgX%W%P5pm|=t z{W{S%gU9+uqZV_qLXDBjQ{k1lL_z4LVswYO)ctmg?~kEo^H5JM8mYQ^5{{Y6JomRW zmpZ{*;R$O|`H}n^>v;}>stWa+dA!G=+DJv`zeO%g^gO9|!l+l!h2|RfeR@RDE0;3( z6nl}!=XD_la?=Zd7oOyA zf{SOca78G@3EKdh0ae2jUIyF+h$#V;2{giKmD9M9sDc(j4Kl!mt?*|E*S5lgXcw)j znyEnuQnB0T*YQ^1tXB4mfF3~2EeW;S*QYOOs&|ie|LL}*VQ1?OzLj^MLsWM{0br_|eBN{x(Nb5*#N1vBA z+H%uN$Yzy?h|^UWv8-`?K2<#giq&|pR7Jow1f?8O?(D*wRPI#)hPrSOLe5Q;s!o#ccGFHwtfm;BcaCCrdN#}|&9Jwa zRhnV<>SiZWrS?p}ZdZwky->4Tt%SrrOoij6s<#nP<})otET%>KymX?Hn{sj_sm6p_ zLs9Em)LD7O0uO?eeI zShgt~RisDzeO@0-$W2q@5NDPd5{lN*@ltN8GN7?6)$}2nzRl(HLKoDhQCan~3a8UV zr4wqaGe|Wxhw>jin_|ISc-VNFV8Y4Tkb1;c)4RHDVmHEAmI?>`|^y4 zMVewB6mJE&BD+N~4?DGA`||SC$4JX;(naJZGs0(iPNBNU7LtN>o|x5-_Xyvn*;@~L z>%i(QHuvMV!BT1gFSl-1Ev=6i3krBq>`MggmSu{GTKhrhRH1D9GE;n2z`fx=YQ~25 z_IXRe=q5r7u~mu{$42oSku{Nrg`R+jAv1IaxW=zDgZCD4?YL6KV+AYXGn7+>aj*Lm z^qG39Fz$16>IvmkVLT9$Mm>R3#luBfPZ*DzF{q`XI8|IO;)O=`O{VBq%Evln3_|2mldHCP)=c|%(V zQz#s58BG1C3Ho4~L`}e8`gZ7F2h-4D7)&9($#sWyDO`V{w>V$UOPwi13X8tQMjcp_ za-A45if4ti8C$D*i-u7cBfYcKCY9y;yhG87ExkopA&*u2;l`>u*fDz4F4#}yM72y^ zW7N9l5u)dXQJyw-hB;&3m})8yBzmD*4kh~aYWXgr-xzfp$$XtD)>QB%^0;8aX#TTI zhta4Tw5Z^?IFzEI9~b9QRP^KGKPW2b*zGrHQNeLh@7VOQ=ve>fsK%Nev4W~uh_Y=` z6y3TT4^VkZho`CRgj=>15yz?g4Vq+oJmNPh3zB&<;w>t7A(>|)c2ju}(Vvg_n9BE1 z`R#~*QTZm4c{kFJxs$M$Ns`?eCcc}%2Zj6-LXI^q8o~*~ME=d#O3xa|xBCs*O5+n*y& z4~3IuHxj3(!pXC*AWkoZv*jj2rbdP1CPP?!&94!(gwYr?zf5JTQnu{O5+|nfUanJE#vK!2vH?$4A8h70 zWx#GTcp{5!P48ympTR?^@i&b{ zGzzV2T-2O|VN`ys0|{8(KxBJdOTqFJ`LBL1XuPoi&gdNA;kMnlhRAT@i8$q!2MOH^0#qoB*l%kY;aZ^2)l zO#1^v@?7W|lWXzUBqgLG9QK5`A~LkI)liaY0~zvfS1i4OzjAUnXfP=ui!{{5E4u8rWCg@2;F40PSVoct(!V_qHs)Nw92 zmXOo3?eCcODYdijk^o|z08+G9{QXXzCC?J?+{shZMv>vmvgOBXZQBI$0vMdsq@-TY%*;%vBw#}|db0Xg4bh=X1a zOIwhEx>`6XZNb#Gph|?_%j03LJ6?XpT&2O%YEB1=IUOkGbfB2iK^587Ku%@l%oZT! zUUkAnrGlEa{_21#D3*1k)Sv^U1|29hXh5w&15$2$IBF;nk@NWVYG5|BZHW$)mgqpK zM+ZthI;awB=kfRn$EagAYIeS93w~$|PPYZ?(6cQ%-?s%1w*@D%McjN|6t)sAZ^<5O z2P+FUrHxagcna;DLdDkkYTDR0UrQVLel2bAz3%Op^^`F8`IWTsonK2E{J0qxUP{^+ zUZe!jch$5(YPJ~DT{L(9pJ~IE5SLGe)U=@(N;0h{L;o#p*wQ_V zNJC8v|;O(u^9{{ZP+to-Q+!`4SSJNR?>!Jp34XKJNyPg<$e(_B@5)^ zt)v02rU9;|0Sm_z?1M)M<5j6c7nI{^#yc?Mi4pI|Clc;5oGbKs#eoJM9X#B?w?`Js zg&lclzP*pVw|!PFi;0>qn~3*O+!+>S(_B2GQV zJKCpaw#Wznc#OXij%7#^&%Dfk^Djjw>lYE)twqZXhkp5?--+l~CHf7DezBroxajvV z`t^){YolN0=yyE&)emlj)EgpP6)ER9{RTnc1pjrYSu1|^eZm?{!70n z(=XA`TIGl9dMqY2ORyj*c&x{-o)cBJB&h=5tkebcv)Hx#&l+{UexACP|L=!%zJ7$d zmOt!aoj=^K9gD6NsD45h(2pS3^5y4szP_KomhXLC=j$7-Yx%Ej)A_yh4bHU!v)<7K z^j(Y2k3xY-n}P>6@Ttkxn(4PsuAVb}_N?G-pW@3z#9fo7 a;`}WG|v*t{`{q{R= zog+3LI=vp!E6z_$v zZH=dRj+`gnJH@-;W1BdCiuYv0d#i$5aJHxt!%p*F`0S>TOi?)4<81Z9Y2H&V6JMXk zXOJ3UJOfirgyK#6Ab?$E)fw2?moL_!LO)F(dT9F4Ll=bf(Db2)rVl+dedwX-Lk~?K zdT9F4L(_*Inm+W<^r45Q4?Q$}=%MLD4_&C@nc}7CLk~?KdT9F4L(_*Inm+W<^r45Q z4?WG=L(_*Inm)=DqHAP4G=1oy+Z5@M9dcxF!&!dOk-f427(b4G^gHL%u{y0Tl;{{; zf#1cF;1`$ifhn;P{Gtf;u8(0D9dSs~6Tn3>4Js!6U=}^E@YnqMl@rlE1yBDOq@S;T z4nPj61CdE|sMCMM|3L?M6F%1t$F{TgV>|w3Turx-$N+Dr;1G{o#m=Z+OvcNP55CgS zKjpgnp(9IHDW{$EfOdE&aC4&1OOc}HjR8IiJWazl0uN7W};&pmR|5btm2)YbM_##vea zQAi`(;ZE&vQajwW9d2jef3;^j0U9K9GRTgDnjxz>9wl z|5ql%=k2NSy8u6h`7uMoIlym%|E`An0hfbctl=TRt{k5i4Obk#5!hi@Q&5B-9?byZ zzA&Hn1x;WM@R@9%H&w&)fmgvGQk7z0F>o#N&sq&X1YComkf-5)05>BckbF22!bafl z@>)VJy$O5}5ts|UpF(&DgmX~9OHnw2LIzqynD{5CK)3q%IWc+80>{eg)hzKZ0_*z} z!X_l$W;B4hjBp4recYz`8xBLUz{O|~_OE_LAO!^d3k)gr0M@^p5H11MTTFde0bGSX z&V@n3Rls_m6P^v6h%O~Q>E8pqEedOuhL-@VAJOowhZNR1&Qg{J)8)ivYtp%?EKMRAY8vY;P`3UhrVCwV3!1&db?Nmel72%8KIwCqHoAf*o=&_XF_0uC0UmXW%!xV9aQP z8drLL$$=2zu%U#IBO`2R6S5fKiT(M;euZN|XgY?yx(a_|vStF#OPwFaMemNritf!C*CGp!j|P5h47L~H!V$)FZ; zFDjsGfOLGV^l9?jfwK`IUH<^^d_+LUN9f*CKLC-3-vDn$>ZR#Q_!O`nQopgzomfKm@Bael+lT?(^QOVGrUQtp7g>s?ZDEcJ+J{n642p{-kimrPCP1L%m9_S1Q~E{{4u6wtV}g{UC(qVs+C7 z#V=@jUYkL96#QQ?h=yqV?}6z|qdQE43BNk}Zj zrDwp`cUVr`J--U9cX=YM|64(*!g@SQGk6$y8a4>)v=$!+&cv7~)A-+D8jV3nGc^1I z_?|S(BF*7nfcs*M)M|VdB1tolDGzG)yukVeh+mmTAm}$Igl`4*K|!ye4)~=u(=q`3 zaGPng4p_e^A^op`y~uR>v_1n|kC5kT4sj%^*dAyg#-GwhAt018tk0T<$-p%&W56oq z5x-5JPXqoHsaH=tcL38-QXdn~08ebAzXe$TFA~(n9|EfpyGb1+M?la&`jfyJ;Je#Q zn_qz2PMa&h`Pi}*Yb^>3!(!DYLdn1m@neW#KV2;ZKMgh9Z4^De;4#4kQHD{5=*s_c zqwsNzVT2saiZy(|f*st3d9wJs$54Q8r29RFcq^THR}M$h#4iNt(0dMp!XVu7hIkXL z-WSG*qIg51fySFy8E=RQ*2NnPvOG*I_8O9mzdz3;w|E&v*(DBn4Qcp4%D>}f^lji$ zvPelVB(a*4Vn~7^m2E#QZm0K#vtkY2A$6CyREBG8it!Y&Kf%z+c+g>xa>Qw9#qc3;#yyln~q diff --git a/fpga_spn/src/init.h b/fpga_spn/src/init.h index 6eeba18..8515496 100644 --- a/fpga_spn/src/init.h +++ b/fpga_spn/src/init.h @@ -13,6 +13,7 @@ typedef void (*function_ptr_t) (void); plic_instance_t g_plic; std::array g_ext_interrupt_handlers; bool hw_interrupt{true}; +bool dma_interrupt{true}; /*! \brief external interrupt handler @@ -43,11 +44,7 @@ void configure_irq(size_t irq_num, function_ptr_t handler, unsigned char prio=1) PLIC_enable_interrupt(&g_plic, irq_num); } -static void msi_interrupt_handler(){ - hw_interrupt = false; -} - -void wait_for_interrupt() { +void wait_for_spn_interrupt() { // wait until HW is done if(hw_interrupt) { do{ @@ -58,6 +55,17 @@ void wait_for_interrupt() { hw_interrupt=true; } +void wait_for_dma_interrupt() { + // wait until HW is done + if(dma_interrupt) { + do{ + asm("wfi"); + asm("nop"); + }while(dma_interrupt); + } + dma_interrupt=true; +} + /*!\brief initializes platform * */ @@ -77,7 +85,6 @@ void platform_init(){ clear_csr(mie, MIP_MEIP); clear_csr(mie, MIP_MTIP); for (auto& h:g_ext_interrupt_handlers) h=no_interrupt_handler; - configure_irq(2, msi_interrupt_handler); // Enable interrupts in general. set_csr(mstatus, MSTATUS_MIE); // Enable the Machine-External bit in MIE diff --git a/fpga_spn/src/raven_spn.cpp b/fpga_spn/src/raven_spn.cpp index d0c9f9d..1658e15 100644 --- a/fpga_spn/src/raven_spn.cpp +++ b/fpga_spn/src/raven_spn.cpp @@ -25,10 +25,20 @@ void fpga_dma(int direction, int fpga_address, int sc_address, int num_bytes) { dma::sc_address_reg() = sc_address; dma::bytes_reg() = num_bytes; dma::start_reg() = 1; - wait_for_interrupt(); + wait_for_dma_interrupt(); dma::clear_interrupt_reg() = 1; } +static void spn_interrupt_handler(){ + printf("spn_interrupt_handler\n"); + hw_interrupt = false; +} + +static void dma_interrupt_handler(){ + printf("dma_interrupt_handler\n"); + dma_interrupt = false; +} + /*! \brief main function * */ @@ -36,10 +46,12 @@ int main() { platform_init(); + configure_irq(2, spn_interrupt_handler); + configure_irq(22, dma_interrupt_handler); spn::mode_reg() = 1; spn::start_reg() = 1; - wait_for_interrupt(); + wait_for_spn_interrupt(); spn::interrupt_reg() = 1; uint32_t readout = spn::readout_reg(); printf("READOUT HW:0x%x\n", readout); @@ -60,8 +72,8 @@ int main() { printf("Result Bytes: %d\n", result_bytes); - uint32_t step = 10000; - uint32_t iterations = 5; + uint32_t step = 50000; + uint32_t iterations = 2; uint32_t in_beats = (step * sample_bytes) / axi_bytes; @@ -84,7 +96,7 @@ int main() { for (int k = 0; k < iterations*step; k+=step) { fpga_dma(1, fpga_address_in, in_addr, step * sample_bytes); run_xspn(fpga_address_in, fpga_address_out, step, in_beats, out_beats); - wait_for_interrupt(); + wait_for_spn_interrupt(); spn::interrupt_reg() = 1; printf("XSPN finished\n"); fpga_dma(0, fpga_address_out, out_addr, step * result_bytes); diff --git a/raven_spn/raven_spn b/raven_spn/raven_spn index f05de600b64a94a93257749933c72aa719ad45e6..aac31fe54bb4c3187896b6377b9ecff86ba9f926 100755 GIT binary patch delta 32061 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