ĐẠI HỌC CẦN THƠ TRƯỜNG BÁCH KHOA KHOA ĐIỆN TỬ-VIỄN THÔNG... // Nếu bộ đếm dừng, giữ nguyên giá trị hiện tại và không làm gì cả displaycount_con, dec_digit; } } } #ifdef KEYS_BASE static
Trang 1ĐẠI HỌC CẦN THƠ TRƯỜNG BÁCH KHOA KHOA ĐIỆN TỬ-VIỄN THÔNG
Trang 2MỤC LỤC
I CÁC BƯỚC THỰC HIỆN 1
1 Tạo hệ thống mới 1
2 Xây dựng hệ thống QSys 2
3 Gán chân cho hệ thống 8
4 Lập trình phần mềm nhúng 10
II KẾT QUẢ 19
III ĐÁNH GIÁ VÀ NHẬN XÉT 20
Trang 8Hình 2.9
- Bước 9: Gán địa chỉ nền cho các thành phần
Hình 2.10
Trang 9- Bước 10: Lưu hệ thống và sinh tập tin HDL
Hình 2.11
Hình 2.12
3 Gán chân cho hệ thống
Trang 10- Bước 1: Thực hiện gán chân cho sơ đồ hệ thống
Hình 3.1
- Bước 2: Chọn tập tin quy ước gán chân
Hình 3.2
Trang 11Hình 3.4
Hình 3.5 Kết quả gán chân
Hình 3.6
- Bước 4: Nạp thiết kế phần cứng xuống chip FPAG
Trang 13Hình 4.3
- Bước 3: Cửa sổ Properties dự án lập trình
Hình 4.4
Trang 14volatile int *JTAG_UART_ptr = (int *) JTAG_UART_BASE;
volatile int edge_capture;
char count, count_con;
int check=0;
static int running = 0;
char seven_seg[] ={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f,0x67, 0x40, 0x00};
char hex_segs[]= {0,0,0,0,0,0,0,0};
char contant[4]={0,0,0,0};
char dec_digit[]= {0,0,0,0};
char i;
void hex_display(char number , char order_7seg){
volatile int *HEX3_0 = (int *)HEX3_0_BASE;
hex_segs[order_7seg]= seven_seg[number];
*(HEX3_0) = *(int*)(hex_segs);
Trang 15dec_digit[1] = ((number -(number % 100)) /100)%10;
dec_digit[2] = ((number -(number % 10)) /10)%10;
}}
Trang 16// Nếu bộ đếm dừng, giữ nguyên giá trị hiện tại và không làm gì cả display(count_con, dec_digit);
}
}
}
#ifdef KEYS_BASE
static void handle_key_interrupts (void* context){
volatile int* edge_capture_ptr = (volatile int*) context;
*edge_capture_ptr =
IORD_ALTERA_AVALON_PIO_EDGE_CAP(KEYS_BASE);
handle_interrupt (*edge_capture_ptr);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEYS_BASE,0);}
static void init_key_pio(){
volatile void* edge_capture_ptr = (void*) &edge_capture;
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEYS_BASE,0xf);IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEYS_BASE,0x0);alt_irq_register(KEYS_IRQ,edge_capture_ptr,handle_key_interrupts);}
Trang 17usleep(1000000); // Wait for 1 second
Trang 18Hình 4.7
Hình 4.8
Trang 19Hình 4.9
- Bước 5: Biên dịch chương trình
Hình 4.10
Trang 20Hình 4.11
- Bước 6: Thiết lập kết nối hệ thống nhúng và máy tính
Hình 4.12
Trang 21Hình 4.13
II KẾT QUẢ
Dưới đây là kết quả chạy trên kit FPAG tại phòng thí nghiệm
Trang 22III ĐÁNH GIÁ VÀ NHẬN XÉT
- Mạch chạy đúng theo yêu cầu đề ra của đồ án
- Kết hợp reset về 0, tạm dừng và tiếp tục khi nhấn nút
- Hoàn thành được mục tiêu đề ra