1st successful XSPN run. Insert few samples and get one result
This commit is contained in:
		| @@ -84,24 +84,52 @@ void platform_init(){ | ||||
| int main() { | ||||
|     platform_init(); | ||||
|  | ||||
|     // write input samples into the memory | ||||
|     int * mem_base = (int *) 0x80001000; | ||||
|     std::array<uint8_t, 64> input_data = { | ||||
|     		0, 0, 0, 1, 0, | ||||
| 			0, 1, 5, 2, 0, | ||||
|     		0, 0, 8, 0, 0, | ||||
|     		0, 0, 5, 4, 0, | ||||
|     		0, 0, 0, 1, 0, | ||||
|     		0, 0, 0, 1, 0, | ||||
|     		0, 0, 0, 1, 0, | ||||
|     		0, 0, 0, 1, 0 | ||||
|     }; | ||||
|  | ||||
|     for(size_t i = 0, j = 0; j < 16; i += 4, j++) { | ||||
|     	*(mem_base+j) = input_data.at(i); | ||||
|     	*(mem_base+j) |= input_data.at(i+1) << 8; | ||||
|     	*(mem_base+j) |= input_data.at(i+2) << 16; | ||||
|     	*(mem_base+j) |= input_data.at(i+3) << 24; | ||||
|     } | ||||
|  | ||||
|     //////////////////////////////////////////////// | ||||
|     spn::mode_reg() = 1; | ||||
|     spn::start_reg() = 1; | ||||
|     printf("READOUT reuslt:0x%x\n", spn::readout_reg()); | ||||
|     printf("READOUT HW:0x%x\n", spn::readout_reg()); | ||||
|     spn::interrupt_reg() = 1; | ||||
|  | ||||
|     spn::input_length_reg() = 5; | ||||
|     spn::input_addr_reg() = 0x80000000; | ||||
|     spn::output_addr_reg() = 0x80100000; | ||||
|     spn::num_of_in_beats_reg() = 5; | ||||
|     spn::num_of_out_beats_reg() = 1; | ||||
|     spn::mode_reg() = 0; | ||||
|  | ||||
|     uint32_t result_addr = spn::output_addr_reg(); | ||||
|  | ||||
|     spn::start_reg() = 1; | ||||
|     printf("Start SPN HW accelerator\n"); | ||||
|     spn::mode_reg() = 0; | ||||
|     spn::input_length_reg() = 8; | ||||
|     spn::input_addr_reg() = 0x80001000; | ||||
|     spn::output_addr_reg() = 0x80001000; | ||||
|     spn::num_of_in_beats_reg() = 1; | ||||
|     spn::num_of_out_beats_reg() = 1; | ||||
|     spn::start_reg() = 1; | ||||
|  | ||||
|     delayUS(50); | ||||
|     printf("Cycle count:0x%x\n", spn::start_reg()); | ||||
|     spn::interrupt_reg() = 1; | ||||
|     delayUS(10); | ||||
|  | ||||
|     // read calculation results from the memory | ||||
|     int result = *mem_base; | ||||
|     printf("HW Result:0x%lx\n", result); | ||||
|     result = *(mem_base+1); | ||||
|     printf("HW Result:0x%lx\n", result); | ||||
|  | ||||
|     delayUS(100); | ||||
|  | ||||
|     printf("End of execution"); | ||||
| 	return 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user