86 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /****************************************************************************
 | |
| 
 | |
| Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
 | |
| 
 | |
| This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
 | |
| be copied by any method or incorporated into another program without
 | |
| the express written consent of Aerospace C.Power. This Information or any portion
 | |
| thereof remains the property of Aerospace C.Power. The Information contained herein
 | |
| is believed to be accurate and Aerospace C.Power assumes no responsibility or
 | |
| liability for its use in any way and conveys no license or title under
 | |
| any patent or copyright and makes no representation or warranty that this
 | |
| Information is free from patent or copyright infringement.
 | |
| 
 | |
| ****************************************************************************/
 | |
| #ifndef IOT_DNN_API_H
 | |
| #define IOT_DNN_API_H
 | |
| 
 | |
| /* os shim includes */
 | |
| #include "os_types_api.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /** \defgroup dnn APIs
 | |
|   * @brief dnn APIs
 | |
|   * These functions could be used for dnn calculation, feature must be of
 | |
|   * type int16, height of feature should be 1, width of feature should be
 | |
|   * no larger than 16(i.e. at most 16 audios can be proceeded by calling
 | |
|   * one dnn driver function), channel of features should be no larger than 4096
 | |
|   * If the width of feature is less than 16, (16 - width of feature)
 | |
|   * zeros will be padded on every row so that every row of the feature
 | |
|   * occupies 32bytes in DDR.
 | |
|   *
 | |
|   *
 | |
|   */
 | |
| 
 | |
| /** @addtogroup dnn_APIs
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /* @brief dnn_driver() - run a dnn net!
 | |
|  * @param config: the array storing the config
 | |
|  * @param fi_start_addr: where the 1st data of input is put,
 | |
|  *                       the input should be put successively
 | |
|  * @param wi_start_addr: where the 1st data of weight is put,
 | |
|  *                       the weight should be put successively
 | |
|  * @param fo_start_addr: where the 1st data of output is put,
 | |
|  *                       the input would be put successively
 | |
|  * @param audio_num: how many pieces of audios need calculating
 | |
|  *                   in one dnn process, this number should between 1 and 16
 | |
|  * @param pause_again_layer: the number of the layers after whose completion
 | |
|  *                   the computing process will be paused, should be set to 0
 | |
|  *                   when no pause is needed
 | |
|  * @param non_linear: non linear algorithm in the net, there should be only
 | |
|  *                   one kind of non linear algorithm in the net
 | |
|  */
 | |
| void dnn_driver(volatile uint32_t *config, uint32_t fi_start_addr,
 | |
|     uint32_t wi_start_addr, uint32_t fo_start_addr,
 | |
|     uint8_t audio_num, uint8_t pause_layer, uint8_t non_linear);
 | |
| 
 | |
| /* @brief dnn_recover() - recover a paused dnn computing process
 | |
|  * @param pause_again_layer: the number of the layers after whose completion
 | |
|  *                   the computing process will be paused again, should be set
 | |
|  *                   to 0 when no pause is needed
 | |
|  */
 | |
| void dnn_recover(uint8_t pause_again_layer);
 | |
| 
 | |
| /* @brief dnn_get_cycles() - get how many cycles for trans and cal in the last
 | |
|  *                           dnn calculation
 | |
|  * @param trans_cycle: where the trans cycle is put
 | |
|  * @param cal_cycle: where the calculate cycle is put
 | |
|  */
 | |
| void dnn_get_cycles(uint32_t *trans_cycle, uint32_t *cal_cycle);
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */
 | |
| 
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif // IOT_DNN_API_H
 |