Detecting avualable smart pins on FPGA
ozpropdev
Posts: 2,793
in Propeller 2
Hi All
I needed to detect what FPGA board my code is running on to automatically switch from bit bang serial to smart pin serial if available.
Also because my code uses the push buttons and these are mapped differently too.
Now I don't have to build different versions for different boards, a lot easier to manage.
I needed to detect what FPGA board my code is running on to automatically switch from bit bang serial to smart pin serial if available.
Also because my code uses the push buttons and these are mapped differently too.
Now I don't have to build different versions for different boards, a lot easier to manage.
'Detect available smart pins on FPGA 'Returns total number of available smart pins 'and a 64 bit mask indicating active smart pins. dat org sp_detect rep @search,#64 'test all 64 pins mov dirx,#dira testb smart_pin,#5 wc 'pin 0..31 or pin 32..63? setbc dirx,#0 'dira/dirb select wrpin #%11_0,smart_pin 'long repository mode altd dirx,#0 'set port setb 0-0,smart_pin 'enable smart pin mov pattern,##$c0ffee00 add pattern,smart_pin 'unique pattern wxpin pattern,smart_pin 'write long to smart pin nop 'allow time for smart pin write (needed!) rdpin response,smart_pin 'get long from smart pin repository cmp response,pattern wz 'valid response? if_e add available,#1 shr mask_msb,#1 wc 'build valid smart pin mask rcr mask_lsb,#1 setbz mask_msb,#31 wrpin #0,smart_pin 'disable smart pin altd dirx,#0 'set port clrb 0-0,smart_pin 'reset smart pin add smart_pin,#1 'next smart pin search or dirb,##$ffff 'show result on leds (P123-A9/DE2-115) mov outb,available done jmp #done pattern long 0 dirx long 0 response long 0 mask_lsb long 0 mask_msb long 0 smart_pin long 0 available long 0
Comments
Chip gives that info on a reset but I don't know how you can access that info. Probably in the small serial ROM.