Описание библиотеки микросхемы 5023ВС016 процессора "Спутник"
tmtx.c
См. документацию.
1 
29 #include "chip_5023BC016.h"
30 #include "system.h"
31 #include "tmtx.h"
32 
33 
34 /*****************************************************************************
35  * Частные функции
36  ****************************************************************************/
37 
39 static uint32_t TMTX_BitFrameSizeOut()
40 {
41  switch (TMTX_Get_Coder())
42  {
44  return TMTX_BIT_OUT_SIZE_MAX;
46  switch (TMTX_Get_LDPC_Type())
47  {
50  }
52  switch (TMTX_Get_Turbo_Type())
53  {
60  case TMTX_CC_TURBO_1DIV6:
62  }
63  case TMTX_CODER_SEL_RS:
64  return TMTX_BIT_OUT_SIZE_RS;
65  }
66  return 0;
67 }
68 
69 /*****************************************************************************
70  * Общие функции
71  ****************************************************************************/
72 
75 {
76  switch (TMTX_Get_Coder())
77  {
79  return TMTX_FRAME_SIZE_MAX;
81  return TMTX_FRAME_SIZE_LDPC;
83  return TMTX_FRAME_SIZE_TURBO;
84  case TMTX_CODER_SEL_RS:
85  switch (TMTX_Get_RS_Type())
86  {
92  return TMTX_FRAME_SIZE_RS_223;
93  }
94  }
95  return 0;
96 }
97 
99 void TMTX_SetSyncMarker(uint8_t marker_size,
100  uint32_t marker1,
101  uint32_t marker2,
102  uint32_t marker3,
103  uint32_t marker4,
104  uint32_t marker5,
105  uint32_t marker6)
106 {
107  TMTX_Set_Marker_And_Frame_Size(marker_size,
109  TMTX->MARKER1 = marker1;
110  TMTX->MARKER2 = marker2;
111  TMTX->MARKER3 = marker3;
112  TMTX->MARKER4 = marker4;
113  TMTX->MARKER5 = marker5;
114  TMTX->MARKER6 = marker6;
115 }
116 
118 void TMTX_SetEncoder(uint32_t coder_sel,
119  uint32_t coder_config,
120  uint32_t rand_state,
121  uint32_t conv_state,
122  uint32_t conv_speed)
123 {
124  TMTX->CODER_SEL = coder_sel | rand_state | conv_state;
125  TMTX->CODERS_CONFIG = coder_config | conv_speed;
126 }
127 
132 void TMTX_Set_DSCR1_Pointer(uint32_t addr)
133 {
134  TMTX->DSCR1_PTR = addr;
135 }
136 
141 void TMTX_Set_DSCR2_Pointer(uint32_t addr)
142 {
143  TMTX->DSCR2_PTR = addr;
144 }
145 
150 void TMTX_Set_DSCR1_Size(uint32_t size)
151 {
152  if (size > TMTX_MAX_DSCR_SIZE)
153  {
154  TMTX->DSCR1_FLAG_SIZE = TMTX_MAX_DSCR_SIZE - 1;
155  }
156  else
157  {
158  TMTX->DSCR1_FLAG_SIZE = size - 1;
159  }
160 }
161 
166 void TMTX_Set_DSCR2_Size(uint32_t size)
167 {
168  if (size > TMTX_MAX_DSCR_SIZE)
169  {
170  TMTX->DSCR2_FLAG_SIZE = TMTX_MAX_DSCR_SIZE - 1;
171  }
172  else
173  {
174  TMTX->DSCR2_FLAG_SIZE = size - 1;
175  }
176 }
177 
182 {
183  TMTX->DSCR1_FLAG_SIZE |= TMTX_DSCR1_SIZE_FLAG_DATA_PRES;
184 }
185 
190 {
191  TMTX->DSCR2_FLAG_SIZE |= TMTX_DSCR1_SIZE_FLAG_DATA_PRES;
192 }
193 
198 {
199  TMTX->GLOBAL_ENABLE = TMTX_GLOBAL_ENABLE;
200 }
201 
206 {
207  TMTX->GLOBAL_ENABLE &= ~TMTX_GLOBAL_ENABLE;
208 }
209 
218 uint32_t TMTX_Get_Coder()
219 {
220  return TMTX->CODER_SEL & 0x3;
221 }
222 
228 {
229  return (TMTX->PHY_FIFO_UNDERRUN) ? SET : RESET;
230 }
231 
236 {
237  TMTX->PHY_FIFO_UNDERRUN = TMTX_PHY_FIFO_UNDERRUN;
238 }
239 
245 void TMTX_Set_Marker_And_Frame_Size(uint8_t marker_size, uint32_t frame_size)
246 {
247  if (marker_size > TMTX_MAX_MARKER_SIZE)
248  {
249  TMTX->MARKER_AND_FRAME_SIZE = TMTX_MARKER_AND_FRAME_MARKER_SIZE(TMTX_MAX_MARKER_SIZE) |
251  }
252  else
253  {
254  TMTX->MARKER_AND_FRAME_SIZE = TMTX_MARKER_AND_FRAME_MARKER_SIZE(marker_size) |
256  }
257 }
258 
269 {
270  return (TMTX->CODERS_CONFIG & (3 << 0));
271 }
272 
282 {
283  return (TMTX->CODERS_CONFIG & (3 << 8));
284 }
285 
295 {
296  return (TMTX->CODERS_CONFIG & (3 << 16));
297 }
298 
306 {
307  return (TMTX->CODERS_CONFIG & (1 << 24));
308 }
309 
#define TMTX_FRAME_SIZE_RS_223
Definition: tmtx.h:150
uint32_t TMTX_Get_RS_Type()
Возвращает тип используемого кодера Рида-Соломона
Definition: tmtx.c:294
FlagStatus TMTX_FIFO_Underrun()
Функция возвращает значение флага опустошения асинхронного FIFO.
Definition: tmtx.c:227
#define TMTX_MAX_DSCR_SIZE
Definition: tmtx.h:162
uint32_t TMTX_Get_Conv_Type()
Возвращает тип используемого сверточного кодера
Definition: tmtx.c:268
void TMTX_Global_Enable()
Функция активирует Global Enable контроллера: включение всех модулей, ответственных за передачу данны...
Definition: tmtx.c:197
uint32_t TMTX_Get_LDPC_Type()
Возвращает код, соответствующий выбранному типу кодера LDPC.
Definition: tmtx.c:305
void TMTX_SetSyncMarker(uint8_t marker_size, uint32_t marker1, uint32_t marker2, uint32_t marker3, uint32_t marker4, uint32_t marker5, uint32_t marker6)
Настройка параметров синхромаркера. Производится после выбора и настройки кодера. ...
Definition: tmtx.c:99
Этот файл содержит описание адресного пространства микроконтроллера 5023ВС016.
uint32_t TMTX_Get_Turbo_Type()
Возвращает тип используемого турбо кодера
Definition: tmtx.c:281
#define TMTX_MARKER_AND_FRAME_FRAME_SIZE(x)
Макросы для MARKER_AND_FRAME_SIZE.
Definition: tmtx.h:104
#define TMTX_FRAME_SIZE_TURBO
Definition: tmtx.h:148
void TMTX_Set_DSCR1_Pointer(uint32_t addr)
Установка указателя на адрес памяти для дескриптора 1.
Definition: tmtx.c:132
uint32_t TMTX_GetFrameSize()
Функция, возвращающая размер фрейма, соответствующий настроенному энкодеру, в байтах ...
Definition: tmtx.c:74
#define TMTX_DSCR1_SIZE_FLAG_DATA_PRES
Definition: tmtx.h:76
static uint32_t TMTX_BitFrameSizeOut()
Definition: tmtx.c:39
#define TMTX_BIT_OUT_SIZE_TURBO_1DIV2
Definition: tmtx.h:155
#define TMTX_BIT_OUT_SIZE_RS
Definition: tmtx.h:159
#define TMTX_BIT_OUT_SIZE_TURBO_1DIV6
Definition: tmtx.h:158
#define TMTX_PHY_FIFO_UNDERRUN
Макросы для PHY_FIFO_UNDERRUN.
Definition: tmtx.h:86
#define TMTX_BIT_OUT_SIZE_MAX
Definition: tmtx.h:152
FlagStatus
Тип для состояний флагов
Definition: types.h:64
void TMTX_Set_Marker_And_Frame_Size(uint8_t marker_size, uint32_t frame_size)
Установка размера синхромаркера и периода вставки синхромаркера
Definition: tmtx.c:245
void TMTX_DSCR1_Data_Ready()
Необходимо вызывать функцию после того, как данные для дескриптора 1 подготовлены для передачи ...
Definition: tmtx.c:181
#define TMTX_GLOBAL_ENABLE
Макросы для GLOBAL_ENABLE.
Definition: tmtx.h:81
uint32_t TMTX_Get_Coder()
Возвращает тип используемого кодера
Definition: tmtx.c:218
void TMTX_Set_DSCR1_Size(uint32_t size)
Установка размера дескриптора 1.
Definition: tmtx.c:150
#define TMTX_BIT_OUT_SIZE_TURBO_1DIV4
Definition: tmtx.h:157
#define TMTX_MARKER_AND_FRAME_MARKER_SIZE(x)
Definition: tmtx.h:105
void TMTX_FIFO_Underrun_Clear_Flag()
Сброс флага опустошения асинхронного FIFO.
Definition: tmtx.c:235
#define TMTX_BIT_OUT_SIZE_TURBO_1DIV3
Definition: tmtx.h:156
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с аппаратным модулем п...
#define TMTX_FRAME_SIZE_MAX
Макросы, относящиеся к логике работы контроллера
Definition: tmtx.h:146
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с регистрами общего на...
#define TMTX_BIT_OUT_SIZE_LDPC_7136
Definition: tmtx.h:153
void TMTX_SetEncoder(uint32_t coder_sel, uint32_t coder_config, uint32_t rand_state, uint32_t conv_state, uint32_t conv_speed)
Установка используемого кодера и настройка режима его работы, настройка рандомизатора и сверточного к...
Definition: tmtx.c:118
void TMTX_Set_DSCR2_Pointer(uint32_t addr)
Установка указателя на адрес памяти для дескриптора 2.
Definition: tmtx.c:141
#define TMTX_FRAME_SIZE_LDPC
Definition: tmtx.h:147
void TMTX_DSCR2_Data_Ready()
Необходимо вызывать функцию после того, как данные для дескриптора 2 подготовлены для передачи ...
Definition: tmtx.c:189
Definition: types.h:64
#define TMTX
Указатель на структуру TMTX.
void TMTX_Global_Disable()
Функция отключает Global Enable контроллера: все кодеры, fifo, ahb контроллер будут находиться в асин...
Definition: tmtx.c:205
#define TMTX_MAX_MARKER_SIZE
Definition: tmtx.h:161
void TMTX_Set_DSCR2_Size(uint32_t size)
Установка размера дескриптора 2.
Definition: tmtx.c:166
Definition: types.h:64
#define TMTX_FRAME_SIZE_RS_239
Definition: tmtx.h:149