当前位置:文档之家› SOPC实验指导书

SOPC实验指导书

SOPC实验指导书
SOPC实验指导书

SOPC实验

3.1使用NiosⅡ IDE建立用户程序

1.创建一个新的C/C++应用工程

执行下面的步骤来创建一个新的C/C++应用工程:

1. 启动NiosⅡ IDE。选择【开始】??【程序】??【Altera】??【QuartusⅡ 5.0】??【NiosⅡ Development Kits 5.0】??【NiosⅡ IDE】启动NiosⅡ IDE。也可以通过图1.1直接点击按钮来启动Nios Ⅱ IDE。

图1 启动NiosⅡ IDE

2.如果出现Workspace Launcher对话框,单击设置工作空间为QuartusⅡ工程的文件夹,如图2所示,这样便于管理。如果是第一次进入工作区,NiosⅡ IDE会先弹出一个欢迎界面,此时点击右上角的Workbench图标,就可以进入NiosⅡ IDE编辑界面。

图2设置IDE工作空间

3.如图3所示,选择【File】??【New】??【C/C++ Application】来打开新建C/C++工程向导,如图4所示。

图3打开新建C/C++工程向导

图4新建C/C++工程向导

4.单击Select Target Hardware右侧的按钮打开Select Target Hardware窗口,选择

led_nios2_system.ptf文件,即指向当前硬件设计系统,如图5所示。

图5选择硬件目标文件

5.选择Select Project Template列表中的hello_led。Name栏中自动更新为hello_led_0,确认选

中Use Default Location栏,如图6所示,单击完成工程创建。

图6完成设置后的工程向导

向导中的Select Project Templates一栏中是已经设计好的软件工程,用户可以选择其中的一个,把它当作模板来创建自己的工程。当然也可以选择Blank Project(空白工程),完全由用户写所有的代码。本实验选取了hello_led工程,然后在此基础上进行适当的修改,一般情况下这比空白工程更加容易,也更方便。

创建工程后,在NiosⅡ IDE工作台左侧的C/C++ Projects视图中显示两个新的工程:hello_led_0和hello_led_0_syslib。hello_led_0是C/C++应用工程,而hello_led_0_syslib是描述hello_nios2_system系统硬件细节的系统库。

IDE工作台的左侧有两个标签:C/C++ Projects视图和Navigator视图。单击C/C++ Project选项卡来显示C/C++ Project视图。该视图适合于大多数的C/C++开发活动。

打开hello_led.c,将其中的int alt_main函数用程序清单2.1所示的清单替换,然后保存。

int alt_main (void)

{

alt_u8 led = 1;

alt_u32 i;

while (1)

{

led=1;

IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led);

i = 0;

while (i<500000)

{

i++;

}

led=0;

IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led);

i=0;

while (i<500000)

{

i++;

}

}

return 0;

}

3.2 PIO输出控制实验1——流水灯控制

1.实验目的

熟悉NiosⅡ PIO设备的访问方法

2.实验设备

硬件:PC机

EDA/SOPC/DSP实验箱

软件:QuartusⅡ 5.0、NiosⅡ IDE 5.0

3.实验内容

使用PIO口控制8个LED进行流水灯显示。

4.实验步骤

(1)启动NiosⅡIDE并建一个空白C\C++工程,然后命名为LEDCon_C。

(2)在LEDCon_C工程文件夹中新建应用程序文件main.c。

(3)在System Library设置页中,把程序和数据区都指定为flash。

(4)编译整个工程,查找语法错误。

(5)Debug整个程序,看输出是否正确。

(6)把程序下载到Flash中去全速运行程序。

5.实验参考程序

PIO输出控制实验1的例程见程序清单3.1

程序清单3.1 流水灯控制

#include "system.h"

#include "altera_avalon_pio_regs.h"

#include "alt_types.h"

int main (void)

{

alt_u8 led = 0x2;

alt_u8 dir = 0;

volatile int i;

while (1)

{

if (led & 0x81)

{

dir = (dir ^ 0x1);

}

if (dir)

{

led = led >> 1;

}

else

{

led = led << 1;

}

IOWR_ALTERA_A V ALON_PIO_DATA(LED_BASE, led);

i = 0;

while (i<500000)

i++;

}

return 0;

}

3.3 键盘中断实验

1.实验目的

(1)熟悉中断服务程序的编写和注册方法。

(2)熟悉中断服务程序的调试方法。

(3)熟悉NiosⅡ处理外部中断的方式。

2.实验设备

硬件:PC机

EDA/SOPC/DSP实验箱

软件:QuartusⅡ 5.0、NiosⅡ IDE 5.0

3.实验内容

外部中断信号由键盘值提供,然后将中断事件反映到LED上,每按一次键LED亮一次。

4.实验前准备

键盘模块的设计包括键盘扫描、键盘译码和键盘消抖。本系统采用VHDL语言对以上三个功能模块进行描述。其VHDL源程序见附录1。

5.实验步骤

(1)启动NiosⅡIDE并建一个空白C\C++工程,然后命名为KeyBoard_C。

(2)在KeyBoard_C工程文件夹中新建应用程序文件main.c。

(3)在System Library设置页中,把程序和数据区都指定为flash。

(4)编译整个工程,查找语法错误。

(5)中断服务程序处设下断点,全速运行程序,然后按下键盘中一个键,单步调试中断服务程序,并观察中断处理过程。

(6)全速运行程序,按下键,控制LED。

6.实验参考程序

键盘中断参考程序见程序清单3.2。

#include "system.h"

#include "altera_avalon_pio_regs.h"

#include "alt_types.h"

#include "sys/alt_irq.h"

volatile int edge_capture;

alt_u32 done=0;

static void handle_keyboard_interrupts(void* context, alt_u32 id)

{

//int i;

/* cast the context pointer to an integer pointer. */

volatile int* edge_capture_ptr = (volatile int*) context;

unsigned int temp;

IOWR_ALTERA_A V ALON_PIO_IRQ_MASK(KEYBOARD_IN_BASE, 0x00); IOWR_ALTERA_A V ALON_PIO_DA TA(KEYBOARD_CONTROL_BASE, 0x1);

/* Read the data register on the keyboard PIO */

temp = IORD_ALTERA_A V ALON_PIO_DATA(KEYBOARD_IN_BASE); IOWR_ALTERA_A V ALON_PIO_DA TA(LED_BASE, 0x01);

/* Read the edge capture register on the keyboard PIO. Store value. */

*edge_capture_ptr

IORD_ALTERA_A V ALON_PIO_EDGE_CAP(KEYBOARD_IN_BASE);

/* Write to the edge capture register to reset it. */

IOWR_ALTERA_A V ALON_PIO_EDGE_CAP(KEYBOARD_IN_BASE, 0x0); /* reset interrupt capability for the keyboard PIO. */

IOWR_ALTERA_A V ALON_PIO_IRQ_MASK(KEYBOARD_IN_BASE, 0x0f); IOWR_ALTERA_A V ALON_PIO_DA TA(KEYBOARD_CONTROL_BASE, 0x0); }

/* Initialize the keyboard_pio. */

static void init_keyboard_pio(void)

{

/* Recast the edge_capture pointer to match the alt_irq_register() function

* prototype. */

void* edge_capture_ptr = (void*) &edge_capture;

/* Enable all keys interrupts. */

IOWR_ALTERA_A V ALON_PIO_IRQ_MASK(KEYBOARD_IN_BASE, 0x0f); /* Reset the edge capture register. */

IOWR_ALTERA_A V ALON_PIO_EDGE_CAP(KEYBOARD_IN_BASE, 0x0); IOWR_ALTERA_A V ALON_PIO_DA TA(KEYBOARD_CONTROL_BASE, 0x0); /* Register the interrupt handler. */

alt_irq_register(KEYBOARD_IN_IRQ,edge_capture_ptr,

handle_keyboard_interrupts );

}

int main (void)

{

int i;

init_keyboard_pio();

while(1)

{

IOWR_ALTERA_A V ALON_PIO_DATA(LED_BASE,0x00);

for(i=0;i<200000;i++);

}

return 0;

}

3.4定时器实验1——使用系统时钟服务

NiosⅡ定时器可用作系统时钟,时间标记,看门狗和脉冲发生器,由于standard系统在生成时,并未启动“Timeout pulse”功能,所以下面的实验将依次介绍定时器的系统时钟,时间标记和看门狗应用。

1.实验目的

了解定时器的系统时钟服务功能。

2.实验设备

硬件:PC机

EDA/SOPC/DSP实验箱

软件: NiosⅡ IDE 5.0

3.实验内容

利用系统时钟服务产生1s的周期性事件,并借此控制LED闪烁。

4.实验步骤

(1)启动NiosⅡIDE并建一个空白C\C++工程,然后命名为SysTimer_C。

(2)在SysTimer_C工程文件夹中新建应用程序文件main.c。

(3)在System Library设置页中,将sys_clock_timer指定为“System clock timer”,并把程序和数据区都指定为flash。

(4)编译整个工程,查找语法错误。

(5)在系统时钟服务程序处设下断点,全速运行程序,单步调试中断服务程序,并观察中断处理过程。

(6)全速运行程序,观察LED的闪烁。

5.实验参考程序

系统时钟服务参考程序见程序清单3.3。

#include

#include"system.h"

#include"altera_avalon_pio_regs.h"

#include"alt_types.h"

#include"sys/alt_alarm.h"

static alt_alarm alarm;

static unsigned char led=0xff;

alt_u32 my_alarm_callback(void*context)

{

if(led==0xff)

{

led=0x00;

}

else

{

led=0xff;

}

IOWR_ALTERA_A V ALON_PIO_DA TA(LED_BASE,led);

return alt_ticks_per_second();

}

void InitPIO(void)

{

IOWR_ALTERA_A V ALON_PIO_DIRECTION(LED_BASE,0X01);

IOWR_ALTERA_A V ALON_PIO_IRQ_MASK(LED_BASE,0X00);

IOWR_ALTERA_A V ALON_PIO_EDGE_CAP(LED_BASE,0X00);

}

int main()

{

InitPIO();

IOWR_ALTERA_A V ALON_PIO_DA TA(LED_BASE,0x00);

printf("test alarm\n");

printf("alt_ticks_per_second()is%ld",alt_ticks_per_second());

if(alt_alarm_start(&alarm,alt_ticks_per_second(),my_alarm_callback,NULL)<0)

{

printf("No system clock available\n");

}

while(1)

return 0;

}

3.5定时器实验2——使用时间标记服务

通过该项服务,用户可以测得某个事件消耗的时间

1.实验目的

了解定时器的时间标记服务功能。

2.实验设备

硬件:PC机

EDA/SOPC/DSP实验箱

软件: NiosⅡ IDE 5.0

3.实验内容

使用时间标记来测两个函数的运行时间。

4.实验步骤

(1)启动NiosⅡIDE并建一个空白C\C++工程,然后命名为TimeStamp_C。

(2)在TimeStamp_C工程文件夹中新建应用程序文件main.c。

(3)在System Library设置页中,指定high_res_timer为“Timestamp timer”,并把程序和数据区都指定为flash。

(4)编译整个工程,查找语法错误。

(5)全速运行程序,观察NiosⅡ信息窗口打印出的信息。

5.实验参考程序

时间标记参考程序见程序清单3.4。

#include

#include"system.h"

#include"sys/alt_timestamp.h"

#include"alt_types.h"

void func1(void)

{

int cnt=10000;

while(cnt--);

}

void func2(void)

{

int cnt=20000;

while(cnt--);

}

int main(void)

{

alt_u32 time1;

alt_u32 time2;

alt_u32 time3;

if(alt_timestamp_start()<0)

{

printf("Can't Start timestamp\n");

}

time1=alt_timestamp();

func1();

time2=alt_timestamp();

func2();

time3=alt_timestamp();

printf("func1 need %u\n",(unsigned int)(time2-time1));

printf("func2 needs%u\n",(unsigned int)(time3-time2));

printf("the freq of timer is%u\n",(unsigned int)alt_timestamp_freq()); return 0; }

3.6定时器实验3——看门狗实验

1.实验目的

了解NiosⅡ的WDT(看门狗)功能及其使用方法。

2.实验设备

硬件:PC机

EDA/SOPC/DSP实验箱

软件: NiosⅡ IDE 5.0

3.实验内容

运行WDT,然后控制LED1—LED8显示输出。先对LED1—LED8进行闪烁控制,并同时喂狗,然后知点亮LED1,并进入死循环,等待WDT复位。

4.实验步骤

(1)启动NiosⅡIDE并建一个空白C\C++工程,然后命名为WDTRun_C。

(2)在WDTRun_C工程文件夹中新建应用程序文件main.c。

(3)在System Library设置页中,把程序和数据区都指定为flash。

(4)编译整个工程,查找语法错误。

(5)用Flash programmer把程序下载到外边Flash中运行。当WDT复位后,程序会重复闪烁LED,表示WDT复位产生。

5.实验参考程序

看门狗参考程序见程序清单3.5。

#include

#include"system.h"

#include"altera_avalon_timer_regs.h"

#include"altera_avalon_pio_regs.h"

#include"alt_types.h"

void WdtFeed(void)

{

IOWR_ALTERA_AVALON_TIMER_PERIODL(WATCHDOG_BASE,0x1234);

}

void DelayNS(alt_u32 dly)

{

alt_u32 i;

for(;dly>0;dly--)

{

for(i=0;i<1000;i++)

WdtFeed();

}

}

void InitPIO(void)

{

IOWR_ALTERA_AVALON_PIO_DIRECTION(LED_BASE,0xff);

IOWR_ALTERA_AVALON_PIO_IRQ_MASK(LED_BASE,0x00);

IOWR_ALTERA_AVALON_PIO_EDGE_CAP(LED_BASE,0x00);

}

void InitWDT(void)

{

IOWR_ALTERA_AVALON_TIMER_CONTROL(WATCHDOG_BASE,ALTERA_AVALON_TIMER_CONTROL_START_MSK); }

int main(void)

{

alt_u8 i;

InitPIO();

InitWDT();

WdtFeed();

for(i=0;i<2;i++)

{

IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0x00);

DelayNS(100);

IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,0xff);

DelayNS(1000);

}

3.7 UART实验1——通过C库函数访问UART

Altera建议用户用HAL API函数或ANSI C标准库来访问UART,而不是直接访问UART寄存器。以下两个实验,先给出ANSI C标准库函数来访问UART的方法,再给出通过HAL API函数访问UART的方法。

1.实验目的

了解使用ANSI C标准库函数访问UART的方法。

2.实验设备

硬件:PC机

EDA/SOPC/DSP实验箱

软件: NiosⅡ IDE 5.0

3.实验内容

用ANSI C标准库函数从JTAG UART中读入字符,如果检测到符合要求的字符,则输出提示信息。学习printf(),scanf(),fopen(),fwrite()等函数的用法。

4.实验步骤

(1)启动NiosⅡIDE并建一个空白C\C++工程,然后命名为UART1_C。

(2)在UART1_C工程文件夹中新建应用程序文件main.c。

(3)在System Library设置页中,先把标准输入输出设备指定为“uart”,再把程序和数据区都指定为flash。

(4)编译整个工程,查找语法错误。

(5)在信息显示框中与UART进行交互,如果在主程序中不对UART设备进行初始化,那么UART将使用在SOPC Builder中预设的波特率值,本实验的预设值是115200bps。

5.实验参考程序

ANSI C标准库来访问UART参考程序见程序清单3.6。

#include

#include

#include"system.h"

int main()

{

char*msg="Detected the character't'\n";

FILE *fp;

char prompt=0;

printf("Please Enter some character:\n");

fp=fopen(RS232_2_NAME,"r+");

if(fp)

{

while(prompt!='v')

{

prompt=getc(fp);

if (prompt=='t')

{

fwrite(msg,strlen(msg),1,fp);

}

if(ferror(fp))

clearerr(fp);

}

fprintf(fp,"closing the jtag uart file handle\n");

fclose(fp);

}

else

{

printf("Fail to open file.\n");

}

return 0;

}

3.8 UART实验2——通过HAL API函数访问JTAG UART

1.实验目的

HAL系统库提供了一组Unix风格的I/O系统访问函数,如open(),close(),read(),

write(),lseek()等。希望读者通过本实验来熟悉使用HAL API函数来访问UART设备的方法。

2.实验设备

硬件:PC机

EDA/SOPC/DSP实验箱

软件: NiosⅡ IDE 5.0

3.实验内容

用HAL API函数从UART中读入和输出字符,学习open(),close(),read(),write(), lseek()等函数的用法。

4.实验步骤

(1)启动NiosⅡIDE并建一个空白C\C++工程,然后命名为UART2_C。

(2)在UART2_C工程文件夹中新建应用程序文件main.c。

(3)在System Library设置页中,不需要把标准输入输出设备指定为“uart”,但是需把程序和数据区都指定为flash。

(4)编译整个工程,查找语法错误。

(5)在信息显示框中与UART进行交互,

5.实验参考程序

用HAL API函数来访问UART参考程序见程序清单3.7。

#include

#include

#include

#include"system.h"

#include"unistd.h"

#define NUM 17

int main(void)

{

int fd;

int len,count;

char*msg="Please Enter 17 characters:\n";

char*info=" too!";

char buf[100];

char*ptr;

ptr=buf;

count=NUM;

len=count;

fd=open(RS232_1_NAME,O_RDWR,0666);

if(fd<0)

{

printf("Some error occurred...\n");

return 1;

}

write(fd,msg,strlen(msg));

while(len)

{

count=read(fd,ptr,count);

ptr=ptr+count;

len=len-count;

count=len;

}

write(fd,buf,16);

write(fd,info,strlen(info));

close(fd);

return 0;

}

3.9 七段数码管显示

1.实验目的

熟悉NiosⅡ PIO设备的访问方法

2.实验设备

硬件:PC机

EDA/SOPC/DSP实验箱

软件:QuartusⅡ 5.0、NiosⅡ IDE 5.0

3.实验内容

使用PIO口控制2个七段数码管以十进制形式循环显示0-99。

4.实验步骤

(1)启动NiosⅡIDE并建一个空白C\C++工程,然后命名为SevenDisplay_C。

(2)在SevenDisplay_C工程文件夹中新建应用程序文件main.c。

(3)在System Library设置页中,把程序和数据区都指定为flash。

(4)编译整个工程,查找语法错误。

(5)Debug整个程序,看输出是否正确。

(6)把程序下载到Flash中去全速运行程序。

5.实验参考程序

七段数码管显示的例程见程序清单3.8

#include"system.h"

#include"altera_avalon_pio_regs.h"

int main(void)

{

int i=0;

int j;

unsigned temp1,temp2,temp;

while(1)

{

i=i+1;

if(i>99) i=0;

temp1=i/10;

temp2=i%10;

temp=(temp1<<4)+temp2;

IOWR_ALTERA_AVALON_PIO_DATA(SEVEN_SEG_LED_BASE, temp);

j=0;

while(j<200000)

j++;

}

return 0;

}

附录1 键盘模块VHDL源程序

-- Keyboard.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY Keyboard IS

PORT(

CLK_1K: IN STD_LOGIC; --系统原始时钟脉冲(1KHz)

CS: IN STD_LOGIC; --扫描复位控制信号

KEY_IN: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --按键输入

CLK_SCAN,CC: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --键盘扫描输出KBY_OUT: OUT STD_LOGIC_VECTOR(9 DOWNTO 0)); --键盘数据输出

END ENTITY Keyboard;

ARCHITECTURE ART OF Keyboard IS

COMPONENT DEBOUNCING IS

PORT(

D_IN,CLK: IN STD_LOGIC;

D_OUT: OUT STD_LOGIC);

END COMPONENT DEBOUNCING;

SIGNAL CLK: STD_LOGIC; --电路工作时钟脉冲

SIGNAL R: STD_LOGIC;

SIGNAL C_KEYBOARD: STD_LOGIC_VECTOR(1 DOWNTO 0); --键扫信号“00-01-10-11”寄存器

SIGNAL C_DEBOUNCE: STD_LOGIC; --去抖动电路

SIGNAL C: STD_LOGIC_VECTOR(3 DOWNTO 0); --键盘输入去抖动后的寄存器SIGNAL N,F: STD_LOGIC_VECTOR(3 DOWNTO 0); --数字、功能按键译码值的寄存器SIGNAL FN,FF: STD_LOGIC; --数字、功能按键标志值数字、功能按键SIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

KBY_OUT <= FF & FN & F & N;

--扫描信号发生器

COUNTER: BLOCK IS

SIGNAL Q: STD_LOGIC_VECTOR(6 DOWNTO 0);

SIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(CLK_1K,Q)

BEGIN

IF(CLK_1K'EVENT AND CLK_1K='1') THEN

Q <= Q + 1;

END IF;

C_DEBOUNCE <= Q(2);

C_KEYBOARD <= Q(6 DOWNTO 5);

CLK <= Q(0);

END PROCESS;

PROCESS(CLK_1K,CS)

BEGIN

IF CS='0' THEN R<='0';

ELSIF CLK_1K'EVENT AND CLK_1K='1' THEN

R<='1';

END IF;

END PROCESS;

SEL <= "0000" WHEN R='0' ELSE

"1110" WHEN C_KEYBOARD = 0 ELSE

"1101" WHEN C_KEYBOARD = 1 ELSE

"1011" WHEN C_KEYBOARD = 2 ELSE

"0111" WHEN C_KEYBOARD = 3 ELSE

"1111" ;

CLK_SCAN <= SEL;

END BLOCK COUNTER;

--键盘去抖

DEBOUNUING :BLOCK IS

BEGIN

U1: DEBOUNCING PORT MAP (D_IN => NOT KEY_IN(0), CLK => C_DEBOUNCE, D_OUT => C(0));

U2: DEBOUNCING PORT MAP (D_IN => NOT KEY_IN(1), CLK => C_DEBOUNCE, D_OUT => C(1));

U3: DEBOUNCING PORT MAP (D_IN => NOT KEY_IN(2), CLK => C_DEBOUNCE, D_OUT => C(2));

U4: DEBOUNCING PORT MAP (D_IN => NOT KEY_IN(3), CLK => C_DEBOUNCE, D_OUT => C(3));

CC <= C;

END BLOCK DEBOUNUING;

--键盘译码

KEY_DECODER: BLOCK

SIGNAL Z: STD_LOGIC_VECTOR(5 DOWNTO 0); --按键位置

BEGIN

PROCESS(CLK,C_KEYBOARD,C)

BEGIN

Z <= C_KEYBOARD & C; --读入的编码与扫描结果拼接

IF CLK'EVENT AND CLK='1' THEN

CASE Z IS

WHEN "111011" => N <= "0000"; --按键'0'

WHEN "000111" => N <= "0001"; --按键'1'

WHEN "001011" => N <= "0010"; --按键'2'

WHEN "001101" => N <= "0011"; --按键'3'

WHEN "010111" => N <= "0100"; --按键'4'

WHEN "011011" => N <= "0101"; --按键'5'

WHEN "011101" => N <= "0110"; --按键'6'

WHEN "100111" => N <= "0111"; --按键'7'

WHEN "101011" => N <= "1000"; --按键'8'

WHEN "101101" => N <= "1001"; --按键'9'

WHEN OTHERS => N <= "1111";

END CASE;

END IF;

IF CLK'EVENT AND CLK = '1' THEN

CASE Z IS

WHEN "110111" => F <= "0001"; --按键'*'

WHEN "111101" => F <= "0010"; --按键'#'

WHEN "001110" => F <= "0011"; --按键'F1'

WHEN "011110" => F <= "0100"; --按键'F2'

WHEN "101110" => F <= "0101"; --按键'F3'

WHEN "111110" => F <= "0110"; --按键'F4'

WHEN OTHERS => F <= "1111";

END CASE;

END IF;

END PROCESS;

FN <= NOT(N(3) AND N(2) AND N(1) AND N(0));

FF <= NOT(F(3) AND F(2) AND F(1) AND F(0));

END BLOCK KEY_DECODER;

END ARCHITECTURE ART;

键盘输入去抖的VHDL源程序

--DCFQ.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY DCFQ IS

PORT(CLK, CLRN, D: IN STD_LOGIC;

Q: OUT STD_LOGIC);

END ENTITY DCFQ;

ARCHITECTURE ART OF DCFQ IS

BEGIN

PROCESS(CLK, CLRN)

BEGIN

IF CLRN = '0' THEN

Q <= '0';

ELSIF CLK'EVENT AND CLK = '1' THEN

Q <= D;

END IF;

END PROCESS;

END ARCHITECTURE ART;

--DEBOUNCING.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY DEBOUNCING IS

PORT(

D_IN,CLK: IN STD_LOGIC;

D_OUT: OUT STD_LOGIC);

END ENTITY DEBOUNCING;

ARCHITECTURE ART OF DEBOUNCING IS

COMPONENT DCFQ IS

PORT(

CLK,CLRN,D: IN STD_LOGIC;

Q: OUT STD_LOGIC);

END COMPONENT DCFQ;

SIGNAL VCC,INV_D: STD_LOGIC;

SIGNAL Q0,Q1,D1,D0: STD_LOGIC;

BEGIN

VCC <= '1';

INV_D <= NOT D_IN;

U1:DCFQ PORT MAP(CLK => CLK, CLRN => INV_D, D => VCC, Q =>Q0);

U2:DCFQ PORT MAP(CLK => CLK, CLRN => Q0, D => VCC, Q => Q1);

PROCESS(CLK)

BEGIN

IF CLK'EVENT AND CLK = '1' THEN

D0 <= NOT Q1;

D1 <= D0;

END IF;

END PROCESS;

D_OUT <= NOT(D1 AND NOT D0);

END ARCHITECTURE ART;

Type Meaning

alt_8 Signed 8-bit integer.

alt_u8 Unsigned 8-bit integer. alt_16 Signed 16-bit integer. alt_u16 Unsigned 16-bit integer. alt_32 Signed 32-bit integer. alt_u32 Unsigned 32-bit integer.

Type Meaning

char 8 bits.

short 16 bits.

long 32 bits.

int 32 bits.

材料_基于FPGA的SOPC流水灯演示实验

基于FPGA的SOPC演示实验 秦菁2012-07-10演示实验:流水灯 实验内容:将8位LED灯点亮,进行流水灯控制 实验步骤: (1)在Quartus II中建立工程 (2)用SOPC builder建立Nios系统模块 (3)在Quartus II中的图形编辑界面进行引脚连接工作等 (4)编译工程后下载到FPGA中 (5)在Nios II IDE中根据硬件建立软件工程 (6)编译后,经过简单设置下载到FPGA中进行调试、实验 随着嵌入式处理器、专用数字器件和DSP算法以IP核的形式嵌入FPGA中,以单片FPGA完成整个嵌入式系统数字部分的设计已经成为现实。此实验主要通过运用Altera公司提供的Nios II软核处理器,了解SOPC的基本概念和基于FPGA的嵌入式系统的开发方法,掌握SOPC硬件开发工具,软件调试工具的使用。下面主要从硬件和软件的部分进行介绍。 一、硬件部分设计 (1)运行Quartus II软件,选择File/New Project Wizard菜单,选择工程目录(自定义)、工程名以及顶层文件名为led_test,在选择器件设置对话框中选择目标器件为Cyclone系列的EP1C6Q240C8N,建立新工程。 (2)双击左侧Entitiy框中的器件名,弹出如下对话框,点击Device and pin options/Unused pins,在Reserved all unused pins中选择As input tri-stated。

(3)选择Tools/SOPC Builder菜单项,或者点击Quartus II软件右上方工具栏的,打开SOPC Builder程序。弹出Create New System对话框。在System Name 文本框中键入nios32(自拟,但与工程名不同),选择语言为VHDL,单击确定 (4)确认Device Family中我们选择的是Cyclone,系统频率为50MHz。如图: (5)下面开始添加系统需要的元件:Nios II32位CPU、JTAG UART Interface、led_pio、RAM。 (5.1)首先添加Nios II32位CPU:双击Nios II Processor,或单击选中后点击 Add按钮,然后在弹出的Nios II Processor设置对话框中设置添加CPU的参数,分别在Core Nios II和JTAG Debug Module选项中选择Nios II/e和level1,其他选项保持默认。Nios II有三种标准:经济型(Nios II/e)、标准型(Nios II/s)、 全功能型(Nios II/f)。本实验中选择经济型。

SOPC课程设计实验报告--基于 NIOS 的 μCOS-II 实验

FPGA-CPLD原理及应用课程设计报告题目:基于NIOS的μC/OS-II实验 学院:信息与电子工程学院 专业:电子科学与技术 学号: 姓名: 指导老师: 时间:2013-7-15~2013-7-20

一、摘要 本实验项目使用Quartus II、SOPC Builder和Nios II EDS从零开始构建一个能够在DE2-115实验平台上运行的μC/OS-II操作系统的Nios II系统。初学者可以借此范例熟悉Quartus II、SOPC Builder、Nios II EDS的使用,并且了解基于FPGA的嵌入式系统开发流程。 关键词:SOPC Builder Nios II DE2Nios II EDS 二、设计要求 从零开始建立一个基于Nios II的μC/OS-II应用实验系统(也可以认为是一个Nios II+μC/OS-II的应用框架)具有以下一些作用。 (1)读者可以借助SOPC Builder工具自行对Nios II软核处理器进行配置。 (2)很多范例都是纯硬件的VHDL代码,需要自行从零开始建立Nios II 系统,不能够直接使用Altera公司已经建立好的Nios II系统。 (3)DE2-115并非Altera公司原创的开发板,而是友晶科技ODM的电路板,很多外围设备都与Altera提供的电路板不一样,所以很多Altera手册中范例都无法执行,必须要有自己从硬件到软件建立系统的能力,将来才有办法将Altera 提供的范例移植到DE2-115上执行并做到最佳化。 三、设计内容” 1、SOPC Builder硬件建立 SOPC Builder是在Quartus II里的SOPC Builder进行的,先建立工程在SOPC Builder里添加硬件,包括CPU,PLL,onchip_memory,SSRAM,SDRAM Tristate Bridge,Flash,JTAG UART,UART,Timer System ID 2、Quartus II硬件处理 硬件会自动建立一个顶层模块,通过建一个原理图来对对应的硬件进行输入输出的添加,再锁定引脚,编译工程,硬件下载。 3、Nios II DE2嵌入软件编写 在Nios II里建立工程,选择相应的模块,编写需要嵌入的软件,添加缺少的头文件对应的宏定义,编译工程,进行软件下载,在观察结果。 四、设计步骤 1、打开Quartus II新建工程

sopc开发流程

实验一 一、实验目的 1.掌握用 Quartus II 开发 SOPC 的基本流程。 2.掌握用 SOPC Builder 进行 Nios II CPU 开发的基本流程。 3.掌握整个 Nios II 集成开发环境。 二、实验环境 1.SOPC-NIOSII SOPC 开发平台一套。 2.USB下载电缆一条。 三、实验原理 本实验的目的主要是对 SOPC 有一个基本的认识,了解整个实验过程,并掌握整个 Nios II 集成开发环境的应用。 (1) 在 Quartus II中新建一个工程。 (2) 在 SOPC Builder中根据自己的需要加入各种参数值。 (3) 利用 SOPC Builder 产生 Quartus II 能够识别的文件。 (4) 在(1)中新建的工程中加入(3)中生成的文件。 (5) 加入输入、输出以及双向端口,并根据需要对其命名。 (6) 对(5)中命名的输入、输出核双向端口根据选定的 FPGA 进行引脚分配。 (7) 编译工程。 (8) 下载编辑代码到 FPGA。 (9) 利用 Nios II 新建另一个工程。 (10) 根据(2)中的资源,编写项目需要的代码。 (11) 编译、下载并调试,查看运行结果,直到正确。 (12) 如果需要,将(11)中生成的代码下载到代码 Flash 中。 四、实验内容 为了熟悉 SOPC 的基本开发流程,本实验要完成的任务就是设计一个最简单的系统,系统中包括 Nios II CPU、作为标准输入/输出的 JTAG UART 以及存储执行代码SRAM。通过 SOPC Builder 对系统进行编译,然后通过 Quartus II 对

实验报告

电子科技大学电子工程学院实验报告 实验名称现代电子技术综合实验 姓名: 学号: 评分: 教师签字 电子科技大学教务处制

电子科技大学 实验报告 学生姓名:学号:指导教师:习友宝 实验地点:331 实验时间:(5—8周)周一5,6,7,8节 一、实验室名称:电子技术综合实验室 二、实验项目名称:基于单片机的多任务的控制系统的实现 三、实验学时:16 四、实验目的与任务: 1、熟悉系统设计与实现原理 2、掌握KEIL C51的基本使用方法 3、熟悉SMART SOPC实验箱的应用 4、连接电路,编程调试,实现各部分的功能 5、完成系统软件的编写与调试 五、实验器材 1、PC机一台 2、SMART SOPC实验箱一套 六、实验原理、步骤及内容 (一)试验要求(以课件要求为准) 基本要求: (1)程序运行后,在8位数码管上显示自己的班级学号(后8位),如2902002001,显示为“02002001”。 (2)定义5个按键(key1、key2、key3、key4、key5)作为功能选择键。每次按下key2时,为“秒表计时器”(定时中断实现),显示从“00.00.00.00”开始,即00时00分00秒00(1/100秒,即10ms)。当按下key1时,返回到显示

班级学号;按下其他功能键时,进入其他功能。 (3)按下key3键时,基于TLC549 A/D转换器进行电压测量(输入电压来自电位器,调节范围0~2.49V,单位:V),并将电压值显示在8位数码管的后3位。 (4)在上面(3)要求基础上,调节电位器,若输入电压超过2.00V,则声光报警,即用发光二极管指示灯(如LED1)闪烁(亮0.5s、灭0.5s);蜂鸣器响(用500Hz方波驱动);若输入电压低于2.00V后,则撤销声光报警。 扩展要求: (5)按下key4键,基于LM75A数字温度传感器,完成温度的测量,显示温度值保留到小数点后1位,整数部分最高位为零时不显示出来(高位零消影)。 (6)按下key5键,完成基于直流电机的转速测量。 (7)对电压测量值进行简单的数据处理,如去除尖峰干扰的平均滤波:每12个测量值数据为一组,去掉最大值和最小值后的10个测量值进行算术平均后,作为显示值。 (8)将班级学号、开机时间(时:分:秒)、电压值、温度值、转速等同时在LCD液晶显示屏上进行显示。 (二)实验内容 硬件设计 (原理框图)

实验报告书写的基本方法与要求

实验报告书写的基本方法与要求 摘要: 实验目的:本实验最主要的目的 实验方法:对实验对象的主要处理,用何种方法得到或反映的实验数据 实验结果:归纳出变化后的实验数据或结果 实验结论:从本实验结果得出的归纳性的结论 引言:在探索性实验,它是实验的基本依据,也就是要阐明你为什么要做这个实验,拟在什么实验对象上,应用什么方法,观察什么指标。由于我们要求大家做的实验一般都是已知结果的,目的是给大家一个探索新知识的范例。因此,我们这里要求大家要归纳出与本实验有关的背景知识。如:“生理因素和药物对呼吸运动的影响”实验,大家都应该紧紧抓住“呼吸运动”来写。要把呼吸运动的概念、肺通气的原理、影响呼吸运动的因素及神经体液因素对呼吸运动的调节等归纳成为一段话,最后加上本实验最主要的目的就可以了。 材料与方法:实验报告的材料与方法不同于科研论文的材料与方法,科研与论文是探索的新知识,锁使用的仪器试剂必须要罗列出来,目的时要说明自己的结果是大家公认的仪器试剂做出来的,因此,必须详细罗列。学生教学实验运用的一般都是普通的试剂和仪器,实验只是起到培养大家基本的科学思维和方法的作用,因此,没有必要罗列仪器和材料。我们一般只要求大家包括以下内容即可:1、对本实验对象的主要处理:2、使用的主要仪器:3、观测的主要指标:4、实验目的。以“生理因素和药物对呼吸运动的影响”实验为例,我们可以这样表述:对麻醉的家兔气管插管并分离双侧迷走神经,用压力换能器和BL-410生物信号记录系统记录家兔的呼吸曲线,用曲线的疏密代表呼吸的频率变化,用曲线的幅度代表呼吸深度的变化,来观察生理因素和药物对呼吸运动的影响。其他实验可以类推。 结果:结果一般是用三线来表示,当然也可以用图来表示(这里的图不是你们剪辑的图,它是由测量出的数据通过做图软件做出来的),具体的请严格按照或参考你们能够看到的书籍的表或来做。表一:增加CO2,N2,无效腔,乳酸和迷走神经对呼吸运动的影响项目呼吸频率(单位)呼吸幅度(单位)处理前处理后处理前处理后CO2 34 56 10 30 备注:讨论: 讨论一定要根据自己的实验结果讨论,一般的格式是:1、罗列变化(增加或减少;增高或降低;增强或减弱)的结果(国际上一般用%表示)。2、根据以上的变化结果推理出结论。3、分析解释这个结论。如“生理因素和药物对呼吸运动的影响”实验中增加CO2为例:本实验发现,麻醉的家兔保持节律的稳定的呼吸运动其呼吸频率是34次/分、呼吸深度是10mmHg,当吸入适量的CO2后,呼吸频率增加X%,呼吸深度增加Y%,由此可知适量的CO2能够增加呼吸运动。由所学的知识可知,CO2是维持呼吸运动必不可少的最重要的生理刺激因子,血液中的CO2可通过血脑屏障。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。讨论完以后,要给一个总结式的结论。如:由本实验可知,适量增加CO2,N2、、、可增强呼吸运动。。。。。。。。可减弱呼吸运动

SOPC实验报告

SOPC系统设计技术实验报告 姓名: 学号: 院系:信息科学与工程学院 专业:电子科学与技术 指导老师: 完成日期:2015年04月25日

实验二、NIOSII实现串口收发数据及LCD显示 一、实验目的 (1)进一步熟悉Quartus II、SOPC Builder、NIOS II IDE的操作; (2)掌握SOPC硬件系统及NIOS II软件的开发流程。 二、实验内容 (1)、实验平台:硬件:PC级、SmartSOPC+教学实验开发平台;软件:Quartus II 9.0,SOPC Builder 9.0,NIOS II IDE 9.0。 (2)、实验内容:建立包含SDRAM、JTAG_UART、Timer、LCD的NIOS II处理器系统,通过JTAG_UART从IDE的控制端窗口读取输入值N,计算1至N的累加值,并将计算结果及计算花费时间的显示在LCD中。 三、实验步骤 3.1硬件设计 根据实验内容,可以得出本次实验的硬件结构图如图3.1所示: 图3.1 硬件设计结构图

具体硬件设计步骤如下: 1)、在Quartus II中建立一个工程命名为:smallCore,器件设置为EP3C55F484C8; 2)、以原理图输入方式建立空白顶层模块,并保持; 3)、打开SOPC Builder,命名SOPC系统名称为nios2system,开始建立NIOS II系统。 4)、双击SOPC Builder主界面左侧中的“Nios II Processor”,出现Nios II CPU的配置向导对话框,如图1.4所示,在这里可以有三种Nios II CPU选择,我们选择快速型的Nios II/f,不使用硬件乘法器及除法器。然后单击Next进入下一步配置;Instruction Cache项中选择2 Kbytes,在Data Cache项中选择512 Bytes,单击Next进行下一步配置;在“Advanced Features”和“MMU and MPU Settings”选项卡中选择默认参数,然后单击Next,到了“JTAG Debug Module”选项卡,如图1.6所示。这里是选择JTAG调试接口,选择默认的模式Level 1,然后单击Next,到了“Custom Instruction”选项卡,也选择默认参数,最后单击Finish完成对Nios II CPU的配置。 5)、添加了Nios II CPU内核后,选中Module Name下的cpu_0,单击鼠标右键,在Rename 项中可以重命名cpu_0的名称为cpu,并在“Clock Settings”一栏中将clk_0名称改为clk。 6)、双击在SOPC Builder主界面左侧中的Bridges and Adapters→Memory Mapped→Avalon-MM Clock Crossing Bridge,出现Clock Crossing Bridge的配置向导对话框,在“Slave-to-Master FIFO”中的FIFO depth中选择64。单击“finish”退出配置对话框,并重命名clock_crossing_0的名称为clock_crossing。 7)、双击在SOPC Builder主界面左侧中的Memories and Memory Controllers→SDRAM→DDR SDRAM High Performance Controller,出现DDR SDRAM High Performance Controller的配置向导对话框。修改“General Settings”选项卡的参数配置,参数修改如下:Speed grade:8 PLL reference clock frequency:85 Memory clock frequency:100 Local interface clock frequency:full 修改“Modify Parameters”:DDR SDRAM控制器参数,参数修改如下: Total Memory interface DQ width:16 Memory vendor:other

指纹实验报告

中央民族大学生命与环境科学学院 遗传学实验报告 人类指纹的采集识别与分析 2014年11月9日 人类指纹的采集识别与分析 前言 遗传学研究中根据遗传性状的表现特征将其分为两类,即数量性状(quantitative character)和质量性状(qualitative character)。质量性状通常差异显著,呈不连续变异, 由主基因决定,杂交子代的表型呈现出一定的比例,可直接采用孟德尔遗传原理进行分析。 数量性状不同于质量性状,数量性状是可以度量的性状,呈连续变异,由多基因决定,各基 因作用微小并且是累加的,呈剂量效应,因此通常要采用统计学方法分析。指纹性状就是属 于数量形状。 1880年henry fauld及william herschel相继提出利用指纹鉴定个人身份的 设想。 galton研究了有血缘关系的人群的指纹证明了指纹花样对人来说是一个稳定的性状。 1924 年挪威女科学家bonnevie提出指嵴数计数法。指纹在胚胎发育第13周开始形成,第 19周完成。因此如有某种遗传或生理因素造成嵴纹发育不良既能在指纹上反映出来。本实 验中,同学采用石墨粉填充沟纹再用透明胶粘手指的方法取自己的指纹,并利用这些指纹进 行指嵴数计数、分析,从而对多基因遗传的特点有了更深刻地认识。 1. 材料和方法&设备和方法 2b铅笔一只;约20cm×10cm的复印纸一张;透明胶带;直尺一把个人电脑及adobe photoshop软件;拍照设备一台。 2. 实验原理 1.人类指纹的形成:指纹是指人手上的条状纹路,它们的形成依赖于胚胎发育时的环境 和遗传因素。指纹属于多基因遗传,在胚胎第12~13周(也有人提出15~16周)即已形成并 保持终生不变。每个人的指纹都是独一无二的,两人之间甚至双胞胎之间,不存在相同的手 指指纹。拥有相同指纹的可能性在10亿分之一以下。因此指纹被称做是无法伪造的身份证。 对一个个体而言,指纹具有唯一性和稳定性。 2.肤(皮纹)与指纹皮纹包括指纹、掌纹和褶纹。指纹为最常用的皮纹。大量研究表明, 某些遗传病,特别是一些染色体病和先天畸形常伴有特殊的皮纹异常。所以皮纹检查可以 作为某些遗传病诊断的辅助指标。 3.指纹分析的常用指标—— a.类型——3类:弓(a) ,箕(l),斗(w) ,6亚类:as ,at ; lu ,lr ; ws,wd ; b.总嵴纹数——trc (tfrc ,指纹总嵴线数 c.atd角 d.指纹强度指数(pattern intensity index, pid )——pid = (2 w +l)/n = (2 w +l) /10 (w 是斗型纹的百分率,l是箕型纹的百分率,n 是常数(10个手指).) 4.类型分类 a.弓形纹:由几条平行的弧形嵴纹组成。纹线由指的一侧延伸到另一侧,中间隆起成弓 形。弓形纹又可分为两种,一种是中间隆起较平缓的弧形弓,另一种是中央隆起很高的帐形 弓。 b.箕形纹:这种纹有两个特征,①有几条嵴纹从手指一侧发出,向指尖方向弯曲,再折 回发出的一侧,形成一种簸箕状的纹线;②有一个由三组纹线形成的三叉点或称三角区 (delta)。根据箕口的开口方向分为尺箕(或正箕,开口朝本手尺骨一侧,即小指方向)和 桡箕(或反箕,开口朝着桡骨一侧,即拇指方向)。 c.斗形纹(又称螺纹或涡形纹):它有 两个特征,①有两个三叉点(如果你在一个指纹上找到三个或三个以上的三叉点,那可能是 杂形纹);②由几条环形线或螺形线的嵴纹绕着中心点形成一个回路,或者有形成回路的趋

实验报告格式与要求

作业格式要求 一、作业题目 围绕如何学习信息安全专业课程,掌握专业知识等内容自拟题目并进行论述。 二、用纸、页面设置要求 作业应按规定格式用计算机打印,纸张大小一律使用A4复印纸,单面打印。 页面设置:每一面的上方(天头)和下方(地脚)应留边25mm左右,左侧(订口)和右侧(切口)应分别留边317mm左右。页码设置为:插入页码,居中。 三、作业内容打印要求 作业中所有标点符号必须是中文全角逗号、句号。 (一)目录 采用四号字,其中每章题目用黑体字,每节题目用宋体字,并注明各章节起始页码,题目和页码用“……”相连,如下所示: 目录(黑体小3号) (自然空一行) 第一章 XXXXXXXX ……………………………………………1 (黑体小4号) 1.1 XXXXXX ………………………………………………2 (宋体小4号) 1.1.1 XXXXX …………………………………………6 (宋体小4号) 第二章 XXXXXXXXXX ………………………………………40(黑体小4号)(二)正文字体要求 每章题目居中、黑体小三号;每节题目左顶边、宋体四号加黑;每小节题目左顶边、宋体小四号加黑。正文文字用宋体小四号汉字和小四号“Times New Roman”英文字体,每自然段首行缩进2个字符。 (三)行间距要求 每章题目与每节题目之间的行距设置:每章题目后设单倍行距,段后0.5 行。

每节题目与小节题目之间的行距设置:每节题目后设单倍行距,段后0.5 行。 正文行距设置:设多倍行距,设置值为1.25。 (四)正文章节序号编制 章,编写为:第一章,第二章…。 节,编写为:1. 1、1. 2…,2. 1、2. 2…。 小节,编写为:1. 1. 1, 1. 1. 2…。 小节以下层次,先以括号为序,如(1),(2)…;再以圈圈为序,如①, ②…。层次采用如下格式: 例如: 第一章 XXXXXXXX(黑体小三号)(单倍行距,段后0.5行) 1. 1 XXXXXXXX(宋体四号加黑)(单倍行距,段后0.5行) 1.1. 1 xxxxxx(宋体小四号加黑) (首行缩进2个字符)(1)xxxxx(小四号宋体) (首行缩进2个字符)① xxxxxx(小四号宋体) (下一章另起一页) 第二章 XXXXXXXX(黑体小三号)(单倍行距,段后0.5行) 2. 1 XXXXXXXX(宋体四号加黑)(单倍行距,段后0.5行) 2.1. 1 xxxxxx(宋体小四号加黑) (首行缩进2个字符)(1)xxxxx(宋体小四号) (首行缩进2个字符)① xxxxxx(宋体小四号) (五)报告的公式、图与表 公式号以章分组编号,如(2-4)表示第二章的第4个公式。 公式尽量采用公式编辑应用程序输入,选择默认格式,公式号右对齐,公式调整至基本居中。 图与表中的文字小于正文中的文字字号。 图与表以章分组编序号,如图3-5表示第三章的第5幅图。

sopc实验指导书(1)

CON目录 第一章实验箱简介 (2) 第二章EDA实验单元 (5) 实验一七人表决器 (5) 实验二格雷码变换 (13) 实验三BCD码加法器 (15) 实验四四位全加器 (17) 实验五四人抢答器 (19) 实验六四位并行乘法器 (20) 实验七设计基本触发器 (21) 实验八设计74LS169计数器功能模块 (25) 实验九步长可变的加减计数器 (27) 实验十可控脉冲发生器 (28) 实验十一正负脉宽数控调制信号发生器 (30) 实验十二序列检测器 (32) 实验十三四位并行流水乘法器 (34) 实验十四出租车计费器 (37) 实验十五多功能数字钟 (39) 实验十六数字秒表 (41) 实验十七频率计 (43) 实验十八交通灯控制器 (45) 实验十九数码锁 (47) 实验二十VGA彩条发生器 (49) 附录 (51)

第一章实验箱简介 EDA/SOPC实验箱是集EDA和SOPC开发为一体的综合性实验箱,它不仅可以独立完成几乎所有的EDA设计,也可以完成大多数的SOPC开发。 采用Altera公司的Cyclone系列的12万门FPGA为核心,整个系统采用模块化设计,各个模块之间可以自由组合,使得该实验箱的灵活性大大提高。同时实验箱还提供了丰富的接口模块,供人机交互,从而大大增加了实验开发者开发的乐趣,满足了普通高等院校、科研人员等的需求。 开发工程师可以使用VHDL语言、Verilog HDL语言、原理图输入等多种方式,利用Altera公司提供的Quartus II及Nios软件进行编译,下载,并通过EDA/SOPC实验箱进行结果验证。实验箱提供多种人机交互方式,如键盘阵列、按键、拨挡开关输入;七段码管、大屏幕图形点阵LCD显示;串口通信;VGA接口、PS2接口、USB接口、Ethernet接口等,利用Altera 公司提供的一些IP资源和Nios 32位处理器,用户可以在该实验箱上完成不同的SOPC设计。 EDA/SOPC实验箱提供的资源有: ●Altera公司的EP1C6Q240C8,12万门级FPGA,另外可选配更高 资源的FPGA ●FPGA配置芯片采用可在线变成的EPC2,通过JTAG口和简单的 跳线即可完成设计的固化 ●1个数字时钟源,提供48MHz、12MHz、1MHz、100KHz、10KHz、 1KHz、100Hz、10Hz、2Hz和1Hz等多个时钟 ●1个模拟信号源,提供频率和幅度可调的正弦波、三角波和方波 ●两个串行接口,一个用于SOPC开发时的调试,另一个可以完成 其它的通信 ●1个VGA接口 ●1个PS2接口,可以接键盘或鼠标 ●1个USB接口,利用PDIUSBD12芯片实现USB协议转换 ●1个Ethernet接口,利用RTL8019芯片实现TCP/IP协议转换 ●基于SPI接口的音频CODEC模块 ●1个输入、输出探测模块,供数字信号的观察 ●16个LED显示 ●8个拨挡开关输入 ●8个按键输入 ●1个4X4键盘阵列 ●8个七段码管显示 ●1个扬声器模块 ●1个交通灯模块

大学物理实验报告要求

大学物理实验报告要求 大学物理实验报告要求 一、预习报告要求 1.预习报告包括实验名称,实验目的,实验仪器,实验原理,实验步骤五个部分,采用学校统一的“中原工学院信息商务学院实践性环节报告用纸”书写,不允许打印。 2.预习报告要求有一定的字数,不能过少,该有的图、表一定要画上。 3.预习报告内容要求能反映实验所有环节,学生能直接看预习报告完成实验的内容。 4.无预习报告者不允许进入实验室做实验。 二、原始数据记录要求 1.原始数据记录要求清晰明了,该有的物理量、包括单位一定要写上。 2.原始数据必须得到实验老师的认可,有实验老师的签名才算有效。 3.原始数据要求用黑色或蓝色字迹签字笔书写(画图除外)。 4.原始数据记录一经教师签字即不允许作任何改动,否则视为无效。 三、实验报告要求 1.实验报告包括实验名称,实验目的,实验仪器,实验原理,实验步骤,数据记录,数据处理、思考题七个部分,采用学校统一的“中原工学院信息商务学院实践性环节报告用纸”书写,不允许打印。 2.实验报告中实验数据记录要求将原始数据的数据在实验报告中重新誊写一份,以便处理,不能直接使用原始数据记录或者在原始数据记录页上直接处理数据。 3.数据处理中所有要求画图的处理方式均应在正果的坐标纸上进行作图。 4. 实验报告和预习报告不能互用,预习报告中写过的部分实验报告要求重写。 5.实验报告数据处理要求有详细地处理步骤,不能仅有最终答案。误差处理参考课本第一章和第二章。 四、实验报告装订要求 1.装订实验报告时要求实验报告在前、实验原始数据在中间、预习报告在后统一装订在一起,不要分开装订。 2.报告的第一页要求写清楚自己的姓名、班级、学号,缺一不可。 五、实验报告上交要求 1.上交实验报告时以班级为单位放好,每班放置一摞,不要管是否同一个实验。 2.一般是第二周或者第二次做实验时上交第一个实验的实验报告。 大学物理实验预习报告

sopc 实验指导EP2C35

实验一Hello from Nios II 一.实验目的 1. 熟悉用Quartus II开发SOPC的基本流程。 2. 熟悉用SOPC Builder进行NiOS II CPU开发的基本流程。 3. 熟悉用NIOS II IDE进行C语言编译、下载的基本过程。 4. 掌握NIOS II 集成开发环境。 二.实验内容 实验完成的是一个简单的系统设计,系统中包括NIOS CPU 、作为标准输入/输出的JTAG UART、存储器on chip memory和SDRAM、并行输入输出PIO。通过SOPC 实现NIOS 系统配置、生成以及与NIOS II 系统相关的监控和软件调试平台的生成;在NIOS II IDE中完成系统软件开发和调试;通过Quartus II 完成NIOS 系统的分析综合、硬件优化、适配、配置文件编程下载以及硬件系统调试等。实验最终实现在NIOS II IDE 窗口打印一条信息——―Hello from Nios II ‖。 三.实验平台 硬件平台:SOPC 实验开发系统 软件平台:Quartus II 7.0 NIOS II IDE 四.实验原理 Altera 公司提供的Nios II 嵌入式微处理器软核专为SOPC系统设计核优化,是一种面向用户、可以灵活定制的通用RISC嵌入式处理器。它采用Avalon总线结构通信接口,带有增强的内存、调试和软件功能,可采用汇编或C、C++等进行程序优化开发。Nios II具有32位指令集、32位数据通道和可配置的指令及数据缓冲。与普通嵌入式CPU系统的特性不同,其外设可以灵活选择或增减,可以自定制用户逻辑为外设,可以允许用户定制自己的指令集。由硬件模块构成的自定制指令可通过硬件算法操作来完成复杂的软件处理任务,也能访问存储器或Nios II 系统外的接口逻辑。设计者可以使用Nios II及外部的Flash、ROM、SRAM等,在FPGA上构成一个嵌入式处理器系统。 基于NiOS II处理器软核的SOPC系统设计是一个软硬件协同开发的过程,在设计时可分为硬件核软件两部分,需要多款EDA软件和软件开发环境的相互协同配合。 SOPC的开发流程包括两个方面:基于Quartus II 和SOPC Builder的硬件开发和基于Nios II IDE 的软件开发。基本设计流程如下: (1)分析系统需求,设计规划系统哪些由硬件实现,哪些由软件实现; (2)启动Quartus II 并创建一个新的工程,建立系统的顶层模块文件; (3)启动SOPC Builder,添加需要的功能模块,定义和生成系统模块。这是整个开发流程中最核心的一步。在定义系统时,SOPC Builder可以根据用户 的编辑实时的生成sopc文件和ptf文件(7.1版本之前为ptf文件),类似 一个数据库文件,存储了系统设计信息; (4)将SOPC Builder生成的Nios II系统元件导入Quartus II,根据需要添加其他逻辑模块。按照Quartus II的开发流程最终生成FPGA的编程文件,完成 Nios II系统的硬件开发; (5)启动Nios II IDE集成开发环境,创建一个软件工程项目,并指向生成的Nios II硬件系统。 (6)在Nios II IDE下开发应用程序;

FPGA设计实验指导书(2013)

《FPGA设计》实验指导书

安全操作注意事项 1、接插下载电缆前,请务必关闭实验箱开关,避免损坏下载电缆或实验箱器件。 2、操作过程中应防止静电。 3、保持实验箱和电路板的表面清洁。 4、小心轻放,避免不必要的硬件损伤或者人身受伤。 实验箱简介

实验一简单组合逻辑设计 一、实验目的和任务 1、熟习Quartus II软件的使用; 2、掌握用原理图输入法和硬件描述语言(Verilog HDL)两种方法来设计逻 辑电路; 3、通过电路的仿真及验证,进一步了解4选1数据选择器的功能; 二、实验内容 1、用原理图输入法来设计4选1数据选择器 参照按图1-1所示来编辑完成4选1数据选择器的原理图输入,其中a、b、c、d 为数据输入端,sel[1]、sel[0]为控制输入端,q为4选1数据输出端。存盘仿真后,观察仿真波形,以验证数据选择器的功能。 图1-1 4选1数据选择器原理图 2、用Verilog HDL硬件描述语言来设计4选1数据选择器 用QuartusII中的文本编辑器,编辑输入4选1数据选择器源程序:module m41( a, b, c, d, sel, q); input a,b,c,d; input [1:0]sel; output q; reg q; always @( sel) case(sel) 2’b00: q=a; 2’b01: q=b;

2’b11: q=d; endcase endmodule 程序中的a 、b 、c 、d 依然为数据输入端,sel[1]、sel[0]为控制输入端,q 为4选1数据输出端。同样存盘后进行仿真,并观察仿真波形,以验证数据选择器的功能。 三、实验仪器、设备及材料 电脑、EDA 软件、实验箱、下载电缆。 四、实验原理 4选1数据选择器的原理框图及真值表如图1-2及表1-1所示,sel[1:0]可能出现四种组合情况: 00 01 10 11,它分别对应选通四个不同的数据输入a 、b 、c 、d ,从q 端输出。结合以前所学数字电路的知识,可由真值表得出利用“与非门”实现的逻辑电路,进而可用QuartusII 原理图输入方法,设计出该4选1数据选择器;如应用EDA 技术所学的Verilog HDL 硬件描述语言来描述该电路功能,即可设计出该4选1数据选择器的源程序。 图1-2 4选1数据选择器的原理框图 q Sel[1]输出 选择输入 0a 01b 00 c 11 d 1 Sel[0]表1-1 真值表 五、重点、难点 d a b c

实验报告书写要求

实验报告书写要求 实验报告的书写是一项重要的基本技能训练。它不仅是对每次实验的总结,更重要的是它可以初步地培养和训练学生的逻辑归纳能力、综合分析能力和文字表达能力,是科学论文写作的基础。因此,参加实验的每位学生,均应及时认真地书写实验报告。要求内容实事求是,分析全面具体,文字简练通顺,誊写清楚整洁。 实验报告内容与格式 (一) 实验名称 要用最简练的语言反映实验的内容。如验证某现象、定律、原理等,可写成“验证×××”;分析×××。 (二) 所属课程名称 (三) 学生姓名、学号、及小组成员 (四) 实验日期和地点(年、月、日) (五) 实验目的 目的要明确,在理论上验证定理、公式、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序的调试方法。一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。 (六) 实验内容 这是实验报告极其重要的内容。要抓住重点,可以从理论和实践两个方面考虑。这部分要写明依据何种原理、定律算法、或操作方法进行实验。详细理论计算过程. (七) 实验设备与材料 实验用的设备和材料。 (八) 实验步骤 只写主要操作步骤,不要照抄实习指导,要简明扼要。还应该画出实验流程图(实验装置的结构示意图),再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。 (九) 实验结果 实验现象的描述,实验数据的处理等。原始资料应附在本次实验主要操作者的实验报告上,同组的合作者要复制原始资料。 对于实验结果的表述,一般有三种方法: 1. 文字叙述: 根据实验目的将原始资料系统化、条理化,用准确的专业术语客观地描述实验现象和结果,要有时间顺序以及各项指标在时间上的关系。

【学号显示实验报告】 EDA sopc

成绩指导教师日期 张歆奕2013-5-26 五邑大学实验报告 实验课程名称: 电子系统EDA 院系名称:信息学院 专业名称:电子信息工程 实验项目名称:学号显示 班级: AP10352 学号: 报告人:

实验一:学号显示器 一、实验目的 1、练习使用Verilog HDL语言设计实现数字电路。 2、练习利用Verilog HDL语言和状态机设计电路。 3、熟悉EDA开发基本流程。 4、掌握多个数码管动态扫描显示的原理及设计方法。 二、实验原理 用数码管除了可以显示0~9的阿拉伯数字外,还可以显示一些英语字母。数码管由7段显示输出,利用7个位的组合输出,就可以形成部分英语字母和0~9十个数字的显示。共阴数码管0~9和常见字母的7段显示关系如表4-1所示 (共阳数码管对共阴取反)。

三、设计任务 设计任务(一) 1、用Verilog HDL设计单个数码管顺序显示学号(按一次按键,显示下一位学号字符); 2、对设计进行仿真; 3、锁定管脚并下载到开发板进行验证。 设计任务(二) 1、用Verilog HDL设计八个数码管显示学号,并向左或者向右滚屏; 2、对设计进行仿真; 3、锁定管脚并下载到开发板进行验证。 四、设计源程序和说明 设计任务(一)学号显示源程序 module xuehao_display(clk,rst,out); input clk,rst; output reg[6:0] out; reg[3:0] state; parameter s0=4'd0,s1=4'd1,s2=4'd2,s3=4'd3,s4=4'd4,s5=4'd5,s6=4'd6,s7=4'd7,s8=4'd8; always@(posedge clk or negedge rst) begin if(!rst) begin out =7'b1111111;state=s0;end else case(state) s0:begin out=7'b0001000;state<=s1;end//显示A s1:begin out=7'b0011000;state<=s2;end//显示P s2:begin out=7'b1001111;state<=s3;end//显示1 s3:begin out=7'b0000001;state<=s4;end//显示0 s4:begin out=7'b0000110;state<=s5;end//显示3 s5:begin out=7'b0100100;state<=s6;end//显示5 s6:begin out=7'b0010010;state<=s7;end//显示2 s7:begin out=7'b1001111;state<=s8;end//显示1 s8:begin out=7'b0000110;state<=s1;end//显示3 default:state<=0; endcase end endmodule 程序详解:这是一个非常简单的程序,定义8个输出变量,然后给他们赋值,使他们分别为A P 1 0 3 5 2 1 3,然后通过数码管显示出来。 设计任务(二)滚屏显示源程序

实验报告要求

实验目的: 在excel中进行罗伦兹曲线的制作与集中化指数的计算。 仪器设备: 硬件:计算机 软件:Offices 实验内容一: 根据某地区各个亚区的GDP数据制作2000年与2003年的罗伦兹曲线、计算集中化指数,并比较不同年份该地区GDP在亚区之间分布的集中化程度。 1.原始数据: 《计量地理学》教材p45:习题2.8表---某地区各个亚区的GDP数据 2.实验步骤: 操作步骤 3.实验结果及分析: 最终的图形,集中化指数,不同年份对比 实验内容二: 根据某地区各个亚区的人口与GDP数据,将纵、横坐标均以累计百分比表示,制作罗伦兹曲线,并近似的计算基尼系数。 1.原始数据: 《计量地理学》教材p46:习题2.10表---某一地区各个亚区的人口与GDP数据2.实验步骤: 操作步骤 3.实验结果及分析: 最终的图形,基尼系数 心得体会: 个人心得体会

实验目的: 1.在excel中用单纯形法求解线性规划问题; 2..在excel中进行投入产出分析。 仪器设备: 硬件:计算机 软件:Offices 实验内容一: 用单纯形法求解线性规划问题 1.线性规划模型: 《计量地理学》教材p184第四题的第一小题 2.实验步骤: 操作步骤 3.实验结果及分析: 说明x1,x2取何值时得到最优解为多少 实验内容二: 根据某地区某年度各个产业部门之间的投入产出关系,进行投入产出分析1.原始数据: 《计量地理学》教材p224:习题7.2表 2.实验步骤: 针对6个小题,逐一说明如果操作 3.实验结果及分析: 6个小题的答案 心得体会: 个人心得体会

实验三利用SPSS软件对某地区若干统计指标进行统计分析(综合性实验) 实验目的: 利用SPSS软件对某地区若干统计指标进行综合统计分析 仪器设备: 硬件:计算机 软件:SPSS软件 基本原理: 数据的统计处理:数据处理的方法; 聚类分析:聚类分析的原理; 主成分分析:主成分分析的原理。 原始数据: 《计量地理学》教材p116习题3.16表。 实验内容: 1.用最短距离聚类法对2004年某地区35个城市综合实力进行系统聚类分析,并画出聚类谱系图; 2.用主成分分析法对该35个城市7项经济指标进行主成分分析; 3.以第一、二、三主成分为变量,进行聚类分析。 实验步骤: 操作步骤,可参考实验指导书《SPSS在计量地理学中的应用》 实验结果及分析: 根据实验目的总结实验结果并对之进行必要的分析。可以输出实验结果,然后粘贴在实验报告上。 实验体会: 个人心得体会 注: 1.需体现具体数据,如数据量较多,可复印或打印粘贴 2.黑色字体为统一规定,要求照抄; 红色字体为温馨提示,不可照抄。

最新实验十二SOPC的键盘与LCD显示控制实验

实验十二S O P C的键盘与L C D显示控制实 验

实验3 SOPC的键盘与LCD显示控制实验 【实验目的】 1.熟悉矩阵键盘的工作特性。 2.学会使用VHDL语言描述一个矩阵键盘的电路功能。 3.了解字符型液晶显示控制器。 4.掌握1602液晶的操作方法。 5.学会使用VHDL语言描述一个1602液晶控制的电路功能。 【实验内容】 1.使用VHDL语言描述一个矩阵键盘的电路功能,程序实现的功能是测试 4X4矩阵按键;具体的键值通过FPGA核心板上的数码管来显示。如按下K1,数码管就显示0,按下K16,数码管就显示F。 2.使用VHDL语言描述一个1602液晶显示屏控制的电路功能,使1602液晶 屏可以显示你自己的名字(拼音)。 【实验器材】 1. HS-EDA5.1实验箱 2.USB-BLASTER烧写器 3. Quartus II 8.0 【实验原理】 本实验需要使用VHDL语言描述一个矩阵键盘以及1602液晶控制的电路功能,下面我们先来介绍一下矩阵键盘和1602液晶显示屏。 1.矩阵键盘:键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器 实现,并产生键编码号或键值的称为编码键盘,如计算机键盘.而靠软件编程来识别的称为非编码键盘;在一般常用系统中,用的最多的是非编码键盘。也有用到编码键盘的。非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。

矩阵键盘结构图如上图 矩阵键盘的读取都经历一个扫描的过程,程序先将L1输出低电平,,即端口输入11111110, 即十六进制0FEH,然后读回端口的数据,此时如果 L1 上的四个按键没有按下,读到的P0 口的数据还是11111110,如按下了按键 8,H2 便被拉成低电平,读回的端口数据11011110(十六进制:0DEH),程序就根据读回的数据来判断某个按键按下了,如果没有按键按下,则再将 L2 输出低电平(P0=11111101,十六进制:0FDH),然后也一样读回端口数据,判断有按键按下否,如此下去,到 L4 的完成,为一个扫描过程。刚才按键 8 按下读回的数值是 0DEH,如果做为简单的程序,可以直接用0DEH 来认定是 8 键的键值码,也可以认为它是一个无名键的键值码,所以上面写的 8 不是特定的,而只是序号,你怎么排列键序都可以,甚至认为是游戏手柄的上下左右出拳踢腿键都没问题,问题是按下某下按键后,你知道读回的键值是多少就可以了,键值才有用。 2.1602液晶显示屏:工业字符型液晶,能够同时显示16x02即32个字符,每个字符是5X7的点阵。1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,实验可以用ASCII码直接赋值。 管脚说明如下图

相关主题
相关文档 最新文档