文档库 最新最全的文档下载
当前位置:文档库 › 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)。本实验中选择经济型。

8086接口实验

接口实验部分 实验1 简单I/O口扩展实验 一、实验目的 1、熟悉74LS273,74LS244的应用接口方法。 2、掌握用锁存器、三态门扩展简单并行输入、输出口的方法。 二、实验设备 CPU挂箱、8086CPU模块。 三、实验内容 逻辑电平开关的状态输入74LS244,然后通过74LS273锁存输出,利用LED显示电路作为输出的状态显示。 四、实验原理介绍 本实验用到两部分电路:开关量输入输出电路,简单I/O口扩展电路。 五、实验步骤 1、实验接线:(?表示相互连接) CS0 ?CS244; CS1?CS273;平推开关的输出K1~K8 ? IN0~IN7(对应连接); O0~O7?LED1~LED8。 2、编辑程序,单步运行,调试程序 3、调试通过后,全速运行程序,观看实验结果。 4、编写实验报告。 六、实验提示 74LS244或74LS273的片选信号可以改变,例如连接CS2,此时应同时修改程序中相应的地址。 七、实验结果 程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。例如: K2置于L位置,则对应的LED2应该点亮。 八、程序框图(实验程序名: T244273.ASM)

九、程序源代码清单 assume cs:code code segment public org 100h start: mov dx,04a0h ;74LS244地址 in al,dx ;读输入开关量 mov dx,04b0h ;74LS273地址 out dx,al ;输出至LED jmp start code ends end start

实验2 存储器读写实验 一、实验目的 1.掌握PC机外存扩展的方法。 2.熟悉6264芯片的接口方法。 3.掌握8086十六位数据存储的方法。 二、实验设备 CPU挂箱、8086CPU模块。 三、实验内容 向02000~020FFH单元的偶地址送入AAH,奇地址送入55H。 四、实验原理介绍 本实验用到存储器电路 五、实验步骤 1、实验接线:本实验无需接线。 2、编写调试程序 3、运行实验程序,可采取单步、设置断点方式,打开内存窗口可看到内存区的变化。 六、实验提示 1、RAM区的地址为02000H,编程时可将地址设为01000H,则偏移地址为1000H。 2、如果按字节进行存储,则AL为55H或AAH;如果按字进行存储,则AX应为55AAH。 3、626 4、62256等是计算机系统扩展中经常用到的随机存储器芯片(RAM),主要用作数据存储器扩展。本实验所进行的内存置数在程序中经常用到。计算机系统运行中会频繁地进行内存与外设或者内存与内存之间的数据传输,所以本实验虽然简单但对理解系统程序的运行很关键,望学习和实验时认真对待。 七、实验结果 在断点1处内存区02000H~020FFH单元为00H;在断点2处偶地址为AAH,奇地址为55H 八、程序框图(实验程序名:RAM.ASM)

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新建工程

微机原理实验指导书

微型计算机原理与应用实验指导书 上海大学通信学院

2010 年4 月 PC微机原理实验一 一、目的:掌握PC机DEBUG调试程序有关命令的操作及8086各类指令的 功能。 要求:在PC机上完成下列程序的调试运行,并写出运行结果。二、1.DEBUG的基本操作:(详细内容请参阅教材“程序的调试,P173”和“附录F 调试程序DEUBG的使用,P499”) (1)从WINDOWS进入DOS之后,输入命令启动DEBUG: C:>DEBUG 回车 (2)输入R命令,查看和记录CPU各个寄存器的内容: -R回车 看到什么 (3)输入A命令,汇编下面的字符“WINDOWS”显示程序: -A100 ;从偏移地址是0100H处开始写指令 MOV AH,2 MOV DL, 57 ;57H 是“W ”的ASCII码 INT 21 ;INT 21是DOS 功能调用,AH=2代表2号功能 ;这3句合起来的功能是:显示DL中的字符 MOV DL, 49 INT 2 1 MOV DL, 4E INT 21 MOV DL, 44 INT 2 1 MOV DL, 4F INT 2 1 MOV DL, 57 INT 2 1 MOV DL, 53 INT 2 1 INT 3 ;功能是产生一个断点,不要省略 (4)输入U 命令反汇编上面的程序: -U 100 问:这里100代表什么 (5)输入G命令连续运行上面的程序,记录运行结果:

-G=100 ,57,53依次分别改为574F4E57 (6)输入E命令把上面程序中的数据,49,,44,,45:,,45,4C43,4F4D,-E 103 回车(以下同) -E 107 10B-E -E 10F 113-E 117-E 11B-E (7)输入D命令查看程序机器码的存放情况: -D 100 11E ;看从100开始到11E的机器码 (8)输入G命令再连续运行程序,并记录运行结果: -G=100 (9)依次输入下面的T命令(单步执行)和G命令(设置断点并启动运行),记录各 命令的运行结果: -T=100 回车 -G=100 106 回车 -G=100 10A 回车 -G=100 10E 回车 -G=100 11E 回车 注意: 下面第2—第8段程序是7个实用的小程序,若不小心打错指令,可以这样修改: 例如:CS:0100 B300 MOV BL,0 0102 53 PUSH BX 0103 B220 LP1: MOV DL,20 要修改“PUSH BX”,因为这条指令的IP是0102,所以按以下操作: -A 0102 回车,然后把正确的指令打入,“-A ”是汇编指令。 如果要查看0100以后的指令及相应的机器代码,可以 -U 0100 回车,能够看到CS:0100开始的指令及相应的机器代码。“-U ”是反汇编 若发现有误用,用“-A XXXX 回车”,重打这条指令即可 2.编制一个能在CRT上连续显示A,B,C,D······Z大写英文字符的源程序,并在源程序下汇编调试机运行。

实验报告

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

电子科技大学 实验报告 学生姓名:学号:指导教师:习友宝 实验地点: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

微机原理实验指导书

微机原理实验指导书汕头大学机电系摘录

实验一P1口实验及延时子程序设计 1.实验目的 利用单片机的P1口作为I/O口进行实验验证,掌握利用P1口作为输入口和输出口的编程方法,理解并掌握延时子程序的设计方法。 2.实验设备及器件 IBM PC机一台 DP-51PRO单片机综合仿真实验仪一台 3.实验内容 (1)编写一段程序,用P1口作为控制端口,使D1区的LED轮流点亮。 (2)编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时LED 亮,不按时LED灭)。 图 1 4.实验要求 学会使用单片机的P1口作I/O口。如果时间充裕,也可以考虑利用P3口作I/O口来做该实验。 5.实验步骤 ①用导线把A2区的J61接口与D1区的J52接口相连。原理如图1所示。 ②先编写一个延时程序。 ③将LED轮流点亮的程序编写完整并调试运行。 ④使用导线把A2区J61接口的P1.0~P1.6与D1区J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区J53的KEY1相连。原理如图3.2(b)所示。 ⑤编写P1.7控制LED的程序,并调试运行(按下K1看是否全亮)。 ⑥A2区J61接口P1.7与D1区J54的SW1相连,然后再运行程序,拨动开关SW1查看结果。

6.实验预习要求 阅读附录内容,理解实验的硬件结构。可以先把程序编好,然后在Keil C51环境下进行软件仿真。 7.实验参考程序 程序1: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP M ain ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main: MOV A,#0FFH CLR C MainLoop: CALL Delay RLC A MOV P1,A ;把A的值输出到P1口 SJMP MainLoop Delay: MOV R7, #0 ;延时 Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop RET ; END 程序2: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP Main ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main:JB P1.7,SETLED ;按键没有按下时,跳转到SETLED CLRLED: CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP Main SETLED: SETB P1.0 SETB P1.1

指纹实验报告

中央民族大学生命与环境科学学院 遗传学实验报告 人类指纹的采集识别与分析 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个交通灯模块

微机接口(8086)基本实验指导书

目录 实验须知 (2) 实验一系统介绍 (3) 一.系统特点 (3) 二、8086系统概述 (3) 三、系统电源 (5) 四、硬件介绍 (5) 实验二简单I/O口扩展实验 (9) 实验三存储器读写实验 (11) 实验四I/O口扩展和存储器扩展设计实验 (14) 实验五8255并行口实验 (17) 实验六8253定时器/计数器接口实验 (19) 实验七LCD显示实验 (22)

实验须知 一、预习要求 1.实验前认真阅读实验教程中有关内容,明确实验目的和实验任务。 2.每次实验前应有预习报告,未预习者不允许参加实验。 预习报告中:对软件实验,要求画出程序流程图,编好上机程序;对硬件实验,要求画出实验线路图,拟定实验步骤,画出程序流程图,编好上机程序。 二、实验要求 1.实验是学习“汇编语言程序设计”和“微机原理与接口技术”这两门课程的重要环节,实验课请勿迟到,缺席。 2.爱护设备,保持清洁,不随意更换设备。 3.认真完成实验任务,实验结果经教师检查,教师对实验内容提问,对完成者做记录。 4.做硬件实验时,注意断电操作,即所有的接线、改线及拆线操作均应在不带电的状态下进行,严禁带电操作,并注意防止导线堵塞插孔。 5.发生事故,应立即切断电源,并马上向教师报告,检查原因,吸取教训。 6.实验完毕,请整理实验设备,再离开实验室。 三、报告要求 每次实验后,应递交一份实验报告,报告中应包括下列内容: 1.实验名称、实验人姓名、学号、班级、所用的设备号。 2.实验目的、任务。 3.各任务程序流程图、程序清单(应加适量注释)。 4.硬件实验应画出各任务的完整电路图,包括PC总线与实验用到芯片间全部电路。 5.记录和分析实验结果。 6.据实验目的认真做小结。

大学物理实验报告要求

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

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_[1]...

微机原理与接口技术实验指导书 编者:王亭岭 华北水利水电学院 电气学院自动化教研室 二零一二年三月

目录 实验一标志寄存器应用 (1) 实验二指令寻址方式练习 (4) 实验三分支结构程序设计 (6) 实验四循环结构程序设计 (7) 实验五子程序结构程序设计 (8) 实验六DOS系统功能调用程序设计 (10) 实验七BIOS中断调用程序设计 (12) 实验八定时器中断程序设计 (14)

实验一标志寄存器应用 一、实验目的与要求 1.掌握汇编程序的编译过程; 2.掌握8086的标志寄存器的特点。 二、实验内容 微型计算机(80x86系列)。 四、实验参考程序 DATA SEGMENT A DW 123 B DW 456 SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA START: MOV AX , DATA MOV DS , AX MOV AX , A SUB AX , B MOV SUM , AX MOV AH,4CH INT 21H CODE ENDS END START 五、实验步骤 步骤一、用鼠标单击开始菜单,单击运行。如下图所示:

步骤二、在运行窗口中键入cmd,回车进入命令提示符。如下图所示: 步骤三、在命令提示符中编译汇编源程序并连接*.obj文件。如下图所示:1.C:\>D: 回车 2.D:\ >CD MASM 回车 3.D:\MASM>MASM SY1.ASM 回车 4.D:\MASM>LINK SY1.OBJ 回车

步骤四、在命令提示行中运行并调试汇编程序。如下图所示:1.D:\MASM>SY1.EXE 回车 2.D:\MASM>DEBUG SY1.EXE 回车 六、实验结论 1.程序运行后变量SUM的值是多少? 2.程序运行前后标志寄存器的各标志位有何变化? 3.分析实验结果及所遇到的问题,并说明解决的方法。

实验报告书写要求

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

相关文档