Professional Documents
Culture Documents
Bài 1:
Bài 1: Sử dụng Modelsim mô phỏng 8 Led sáng đuổi từ Trái sang Phải, thời gian
delay là 10us. Báo cáo biểu đồ dạng sóng thể hiện đầy đủ 8 trạng thái sáng đuổi
của 8 Led, và mô tả giải thích dạng sóng trên ModelSim
Phần cứng Qs:
Code C:
-1-
#include <stdio.h>
#include "system.h"
#include "altera_avalon_timer_regs.h"
#include "sys/alt_irq.h"
counter++;
IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_0_BASE,
ALTERA_AVALON_TIMER_STATUS_TO_MSK);
-2-
}
void Timer_Init(void) {
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_0_BASE,
ALTERA_AVALON_TIMER_CONTROL_STOP_MSK);
IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_0_BASE, (period
>> 16) & 0xFFFF);
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_0_BASE,
ALTERA_AVALON_TIMER_CONTROL_CONT_MSK |
ALTERA_AVALON_TIMER_CONTROL_ITO_MSK |
ALTERA_AVALON_TIMER_CONTROL_START_MSK);
int main() {
Timer_Init();
while (1) {
IOWR(LEDS_BASE, 0, leds);
-3-
usleep(100000);
IOWR(LEDS_BASE, 0, leds);
usleep(100000);
return 0;
-4-
Bài 2 Phần cứng Qsys: NIOS, Clock, On-chip Memory, Timer, LCD Thực hiện
hiển thị các số từ 0 - 9 lên LCD với thời gian 10uS Sử dụng Modelsim để mô
phỏng, báo cáo thể hiện đầy đủ các tín hiệu: + Dạng sóng thực hiện Command lên
LCD + Dạng sóng thực hiện ghi Data lên LCD + Dạng sóng thể hiện thời gian
10uS cho mỗi lần ghi data.
Bài làm
Code C:
* Function Description
* =============== =====================================
*/
#include "sys/alt_stdio.h"
#include "system.h"
#include <stdio.h>
#include <unistd.h>
#include "string.h"
#include "altera_avalon_lcd_16207_regs.h"
#include "io.h"
#define LCD_WR_COMMAND_REG 0
#define LCD_RD_STATUS_REG 1
#define LCD_WR_DATA_REG 2
#define LCD_RD_DATA_REG 3
void lcd_init()
usleep(15000);
IOWR_ALTERA_AVALON_LCD_16207_COMMAND(LCD_16207_0_BASE,0x38);
usleep(4150);
IOWR_ALTERA_AVALON_LCD_16207_COMMAND(LCD_16207_0_BASE,0x06);
usleep(4150);
-6-
IOWR_ALTERA_AVALON_LCD_16207_COMMAND(LCD_16207_0_BASE,0x0E);
usleep(4150);
IOWR_ALTERA_AVALON_LCD_16207_COMMAND(LCD_16207_0_BASE,0x01);
usleep(2050);
void lcd_init_2()
usleep(100);
-7-
/* Set Display to ON */
usleep(100);
usleep(100);
usleep(2000);
/* Display clear */
usleep(2000);
int main()
usleep(100);
IOWR(LCD_16207_0_BASE, LCD_WR_DATA_REG,0x38);
while (1);
-8-
return 0;
-9-