1 | function [CC_version,CC_status,lp1,lp2,lp3,lp4,status_RX1,status_RX2,status_RX3,status_RX4,status_TX1,status_TX2,status_TX3,status_TX4,time_frame_count,hard_error_cnt_1,hard_error_cnt_2,hard_error_cnt_3,hard_error_cnt_4,soft_error_cnt_1,soft_error_cnt_2,soft_error_cnt_3,soft_error_cnt_4,frame_error_cnt_1,frame_error_cnt_2,frame_error_cnt_3,frame_error_cnt_4,rx_pck_cnt_1,rx_pck_cnt_2,rx_pck_cnt_3,rx_pck_cnt_4,tx_pck_cnt_1,tx_pck_cnt_2,tx_pck_cnt_3,tx_pck_cnt_4]=configure_fofb(bpm) |
---|
2 | dev=bpm; |
---|
3 | CC_cfg=0; |
---|
4 | matrix_x=256*4; |
---|
5 | matrix_z=512*4; |
---|
6 | CC_status=768*4; |
---|
7 | fai_cfg_reg=2048*4; |
---|
8 | ack_rise=int32([fai_cfg_reg 4 1 9]); |
---|
9 | ack_fall=int32([fai_cfg_reg 4 1 8]); |
---|
10 | Disable_Itech_fai=int32([(fai_cfg_reg+4) 4 1 0]); |
---|
11 | Soft_stop=int32([(fai_cfg_reg+8) 4 1 0]); |
---|
12 | Reset_user_fai=int32([(fai_cfg_reg) 4 1 0]); |
---|
13 | Enable_user_fai=int32([(fai_cfg_reg) 4 1 10]); |
---|
14 | Enable_Itech_fai=int32([(fai_cfg_reg+4) 4 1 1]); |
---|
15 | |
---|
16 | switch mode |
---|
17 | case 'read_RAM' |
---|
18 | RAM_X_array=int32([matrix_x,4,256]) |
---|
19 | result=uint32(tango_command_inout2(dev,'ReadFAData',RAM_X_array)) |
---|
20 | for i=1:1:256 |
---|
21 | RAM_X(i)=result(i); |
---|
22 | end |
---|
23 | RAM_X |
---|
24 | |
---|
25 | case 'read' |
---|
26 | CC_status_array=int32([CC_status,4,32]) |
---|
27 | result=uint32(tango_command_inout2(dev,'ReadFAData',CC_status_array)) |
---|
28 | addr=1; |
---|
29 | CC_version= dec2hex(result(addr)); |
---|
30 | addr=addr+1; |
---|
31 | CC_status=result(addr); |
---|
32 | addr=addr+1; |
---|
33 | lp1=result(addr); |
---|
34 | addr=addr+1; |
---|
35 | lp2=result(addr) |
---|
36 | addr=addr+1; |
---|
37 | lp3=result(addr); |
---|
38 | addr=addr+1; |
---|
39 | lp4=result(addr); |
---|
40 | addr=addr+1; |
---|
41 | link_up_down_status=dec2bin(result(addr),8) |
---|
42 | status_RX1=link_up_down_status(8) |
---|
43 | status_RX2=link_up_down_status(7) |
---|
44 | status_RX3=link_up_down_status(6) |
---|
45 | status_RX4=link_up_down_status(5) |
---|
46 | status_TX1=link_up_down_status(4) |
---|
47 | status_TX2=link_up_down_status(3) |
---|
48 | status_TX3=link_up_down_status(2) |
---|
49 | status_TX4=link_up_down_status(1) |
---|
50 | addr=addr+1; |
---|
51 | time_frame_count=result(addr); |
---|
52 | addr=addr+1; |
---|
53 | hard_error_cnt_1=result(addr); |
---|
54 | addr=addr+1; |
---|
55 | hard_error_cnt_2=result(addr); |
---|
56 | addr=addr+1; |
---|
57 | hard_error_cnt_3=result(addr); |
---|
58 | addr=addr+1; |
---|
59 | hard_error_cnt_4=result(addr); |
---|
60 | addr=addr+1; |
---|
61 | soft_error_cnt_1=result(addr); |
---|
62 | addr=addr+1; |
---|
63 | soft_error_cnt_2=result(addr); |
---|
64 | addr=addr+1; |
---|
65 | soft_error_cnt_3=result(addr); |
---|
66 | addr=addr+1; |
---|
67 | soft_error_cnt_4=result(addr); |
---|
68 | addr=addr+1; |
---|
69 | frame_error_cnt_1=result(addr); |
---|
70 | addr=addr+1; |
---|
71 | frame_error_cnt_2=result(addr); |
---|
72 | addr=addr+1; |
---|
73 | frame_error_cnt_3=result(addr); |
---|
74 | addr=addr+1; |
---|
75 | frame_error_cnt_4=result(addr); |
---|
76 | addr=addr+1; |
---|
77 | rx_pck_cnt_1=result(addr); |
---|
78 | addr=addr+1; |
---|
79 | rx_pck_cnt_2=result(addr); |
---|
80 | addr=addr+1; |
---|
81 | rx_pck_cnt_3=result(addr); |
---|
82 | addr=addr+1; |
---|
83 | rx_pck_cnt_4=result(addr); |
---|
84 | addr=addr+1; |
---|
85 | tx_pck_cnt_1=result(addr); |
---|
86 | addr=addr+1; |
---|
87 | tx_pck_cnt_2=result(addr); |
---|
88 | addr=addr+1; |
---|
89 | tx_pck_cnt_3=result(addr); |
---|
90 | addr=addr+1; |
---|
91 | tx_pck_cnt_4=result(addr); |
---|
92 | |
---|
93 | RAM_XZ_array=int32([matrix_x,4,512]) |
---|
94 | result_ram=uint32(tango_command_inout2(dev,'ReadFAData',RAM_XZ_array)) |
---|
95 | for i=1:1:256 |
---|
96 | RAM_X(i)=result_ram(i); |
---|
97 | |
---|
98 | end |
---|
99 | for i=1:1:256 |
---|
100 | RAM_Z(i)=result_ram((i+256)); |
---|
101 | end |
---|
102 | RAM_X |
---|
103 | RAM_Z |
---|
104 | |
---|
105 | case 'write' |
---|
106 | switch commande |
---|
107 | case 'init_CC' |
---|
108 | conf_array=int16([CC_cfg 4 5 id 0 time_frame_lenght 0 MGT_powerdown 0 MGT_loopback 0 buf_clr_dly 0]); |
---|
109 | tango_command_inout2(dev,'WriteFAData',conf_array) |
---|
110 | tango_command_inout2(dev,'WriteFAData',ack_rise) |
---|
111 | tango_command_inout2(dev,'WriteFAData',ack_fall) |
---|
112 | case 'stop_CC' |
---|
113 | tango_command_inout2(dev,'WriteFAData',Disable_Itech_fai) |
---|
114 | tango_command_inout2(dev,'WriteFAData',Soft_stop) |
---|
115 | tango_command_inout2(dev,'WriteFAData',Reset_user_fai) |
---|
116 | case 'arm_CC' |
---|
117 | tango_command_inout2(dev,'WriteFAData',Enable_user_fai) |
---|
118 | tango_command_inout2(dev,'WriteFAData',Enable_Itech_fai) |
---|
119 | otherwise |
---|
120 | display('command name is not valid') |
---|
121 | end; |
---|
122 | otherwise |
---|
123 | display('mode is not valid') |
---|
124 | end; |
---|
125 | |
---|