Skip to content

Instantly share code, notes, and snippets.

@ytbilly3636
Created November 19, 2018 10:48
Show Gist options
  • Save ytbilly3636/f7ac8b66ec369dd0a93fba0e089713a1 to your computer and use it in GitHub Desktop.
Save ytbilly3636/f7ac8b66ec369dd0a93fba0e089713a1 to your computer and use it in GitHub Desktop.
axi_read_write.vを制御するプログラム
/*
axi_read_write.vを制御するプログラム
*/
#include "xparameters.h"
#include "xil_printf.h"
#include "xgpio.h"
#include "xil_cache.h"
XGpio iwSTT;
XGpio iwADDR_SRC;
XGpio iwADDR_DST;
XGpio orEXE;
#define x ((volatile unsigned int *) 0x10000000)
#define y ((volatile unsigned int *) 0x10010000)
int init_gpio(){
xil_printf("init_gpio()\n");
int status;
status = XGpio_Initialize(&iwSTT, XPAR_GPIO_0_DEVICE_ID);
if(status != XST_SUCCESS)
return XST_FAILURE;
XGpio_SetDataDirection(&iwSTT, 1, 0);
status = XGpio_Initialize(&iwADDR_SRC, XPAR_GPIO_1_DEVICE_ID);
if(status != XST_SUCCESS)
return XST_FAILURE;
XGpio_SetDataDirection(&iwADDR_SRC, 1, 0);
status = XGpio_Initialize(&iwADDR_DST, XPAR_GPIO_2_DEVICE_ID);
if(status != XST_SUCCESS)
return XST_FAILURE;
XGpio_SetDataDirection(&iwADDR_DST, 1, 0);
status = XGpio_Initialize(&orEXE, XPAR_GPIO_3_DEVICE_ID);
if(status != XST_SUCCESS)
return XST_FAILURE;
XGpio_SetDataDirection(&orEXE, 1, 1);
return XST_SUCCESS;
}
void set_input(){
xil_printf("set_input()\n");
int i;
for (i = 0; i < 256; i++){
x[i] = i;
}
Xil_DCacheFlush();
return;
}
void check_x(){
xil_printf("check_x()\n");
int i;
//for (i = 0; i < 256; i++){
for (i = 0; i < 10; i++){
xil_printf("%d\n", x[i]);
}
}
void check_y(){
xil_printf("check_y()\n");
int i;
//for (i = 0; i < 256; i++){
for (i = 0; i < 10; i++){
xil_printf("%d\n", y[i]);
}
}
void execute(){
xil_printf("execute()\n");
// wait until acceptable
while (1) {
if (XGpio_DiscreteRead(&orEXE, 1) == 0)
break;
}
// set inputs
XGpio_DiscreteWrite(&iwSTT, 1, 0);
XGpio_DiscreteWrite(&iwADDR_SRC, 1, x);
XGpio_DiscreteWrite(&iwADDR_DST, 1, x);
// start
XGpio_DiscreteWrite(&iwSTT, 1, 1);
while (1) {
if (XGpio_DiscreteRead(&orEXE, 1) == 1){
XGpio_DiscreteWrite(&iwSTT, 1, 0);
break;
}
}
// output
while (1) {
if (XGpio_DiscreteRead(&orEXE, 1) == 0){
Xil_DCacheFlush();
break;
}
}
return;
}
int main(){
xil_printf("start:main()\n");
int status;
status = init_gpio();
if (status != XST_SUCCESS)
return XST_FAILURE;
set_input();
check_x();
execute();
check_x();
xil_printf("finish:main()\n");
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment