Profile - CN428


CN428

基于红外检测的人机交互系统

清华大学
电工电子实验教学中心






Advisor

Name: 许忠信

Members

No. Name English Name
1 王志恒 Wang Zhiheng
2 林嵩 Lin Song

Project Paper

1. 设计概述 (Preliminary Paper)

 

1.1 设计意图
随着科学技术的飞速发展,计算机对信息的处理得到了本质的提高,于是如何有效率的利用计算机的处理能力成为了一个新课题,即人机交互。本设计主要研究人机交互中的输入方式。
本设计希望实现一种实时响应的动作捕捉式的输入方式,并通过采用基于FPGA的技术进行设计降低设计成本和运行功耗,提高设计效率,且具有可利用一套设备实现多种功能的特点。
1.2 适用范围
由于使用FPGA进行设计,可以通过下载不同的配置文件实现不同的功能。本设计提供了一个模版,为许多的实际用途提出了一种全新的低成本解决方案,这些应用范围广阔,包括大屏幕操作、互动式电子广告牌、虚拟电子琴、互动影像、虚拟足球、手势切换电视频道等等。
1.3 针对用户群
        通过应用不同的功能,本设计可以针对多种用户群。例如虚拟电子琴可用于乐器试听,幼儿教育,互动音效等各种场合;大屏幕操作的功能则适用于大屏幕演讲和多屏幕操作等用途;互动式电子广告可应用于商场、车站、地铁等人流密集的场所。
1.4 采用Altera器件来设计的原因
DE2开发板的资源丰富,包含Cyclone II EP2C35F672C6N芯片,512KBSRAM8MBSDRAM4MBFlash等器件,并有2个标准IDE接口和VGA接口,配以DE2CCD摄像头,完全满足本设计的要求。同时,采用FPGA进行设计成本较低,而且十分灵活,可通过下载不同的配置文件实现不同功能。
(Revision: 4 / 2008-09-12 16:54:44)

2. 功能描述 (Final Project Paper)

 

2.1 非接触式视窗操作
本设计的主要功能是模仿科幻电影《少数派报告》中汤姆克鲁斯饰演的角色配带一幅特殊的手套,在大屏幕前通过手势操作操作屏幕上的视窗,如图2.1
图2.1 科幻电影中的非接触式视窗操作
       用户通过手势和动作与系统进行交互,实现各种输入。本系统的运行的模式共有以下3种:
1、标准模式:本系统效果最好表现最佳的标准设置。我们仿照科幻电影《少数派报告》中汤姆克鲁斯配带的手套(如图2.2)制作了一套手套式输入设备,用户通过佩戴手套做出动作对本系统进行操作。
2、便捷模式:本系统在公共场合中应用的配置,成本低,效果较好,利用率高。公共场合人流量大,用户切换频繁,无法要求那些暂时的用户都佩戴专用手套,所以我们设计了便捷模式。在此模式中,图像采集设备上会附加一个红外光源发射设备,用户通过在两手食指指尖上粘贴1cm见方的3M反光片(如图2.3)进行操作。该大小的反光片成本不高于0.01元,且背面为不干胶。
3、简化模式:本系统的简化模式,成本最低,效果尚可。在本模式中,我们采用低成本的滤光片,同时光源改为自然光。用户通过手持小手电棒(如图2.4)对本系统进行操作。
图2.2 科幻电影中的主角配带的手套
图2.3 用于便携模式的3M反光片
图2.4 用于简化模式的小手电棒             
在任何一种运行模式下,本系统可以实现以下3种输入指令:
1、    拖动窗口:用户执行拖动窗口操作的方式为,将左手保持在右手的左下方,然后匀速移动右手,所移动方向和幅度会立刻反映到当前窗口位置的变化上。用户通过该操作可以将窗口拖动到屏幕上的任何位置。
2、缩放窗口:用户执行缩放窗口操作的方式为,将左手保持在右手的左上方,然后将两手同时向两侧或中心移动,移动的方向和幅度会立刻反映到当前窗口大小的变化上。用户通过该操作可以对窗口进行不固定比例的缩放。
3、切换窗口:用户执行切换窗口操作的方式为,将左手保持在右手的左上方,左手向左下方移动,右手向右上方移动为向下层窗口切换;左手向右上方移动,右手向左下方移动为向上层窗口切换。用户通过该操作可以切换当前的窗口。
通过以上3种操作的组合,用户可以进行图像浏览,交互等操作,进一步的我们计划大量提高窗口的数量,增加音乐和音效,并且在窗口中显示视频等等。
2.2 虚拟电子乐器
本设计的另一功能是实现虚拟电子乐器,其界面友好,操作简单,成本低,展示效果好,扩展性强,可以应用在乐器试听,幼儿教育,互动音效等各种场合。本系统通过识别用户的手指位置,组合波形然后发出相应的钢琴音色,其界面如图2.5所示。
图2.5 虚拟电子乐器演示界面
由于时间所限,目前我们实现了虚拟钢琴的两个音阶,并且只能发出单音。我们计划在将来增加多种乐器的音色,并且增加和弦等功能。在资源条件允许的情况下,我们也可能将其整合到非接触式视窗操作的功能中。
2.3 其他功能
本设计提供了一个模版,为许多的实际用途提出了一种全新的低成本解决方案,这些应用范围广阔,包括互动式电子广告牌、虚拟电子琴、互动影像、虚拟足球、手势切换电视频道等等。由于篇幅所限,无法在这里详细的描述这些设想,故在下面列出一些概念图。
由摄像机和使用者配带的微型无线加速度传感器组成,通过识别使用这个位置和动作对虚拟足球的坐标进行判断,并将其投影到场地中。
图2.6 体感互动式虚拟足球
仅仅依靠手势即可对电视频道进行切换和调控,这也意味着对电视机只能进行远程调控的时代结束。英国剑桥东芝实验室和澳大利亚卧龙岗大学也在进行此方面的研究。
图2.7 手势切换电视频道
时间与影像,用摄像头捕捉人物每0.3秒的动态,记录为连续的静帧,再慢慢消失。这种影像生动地记录了时间的存在——人的参与使之存在。
图2.8 时间与存在
用摄像头捕捉人物动态,投射在百叶窗背景上,背景播放参与式动态影像。参与进来的人越多,影像显示越完整——人的参与使之浮现。
图2.9 参与式动态影像
当头映到地面的广告画面上有人走过时,广告的图像会产生特效,随着使用者的步伐即时产生水波纹,给使用者犹如“水上行走”一般的感觉。
图2.10 互动广告中的水波纹效果
(Draft / 2008-09-12 17:11:03)

3. 性能参数 (Final Project Paper)

       本节列举说明了本作品各方面的设计参数和它们实际的性能情况。

3.1 设计参数

对于本系统来说,动作识别的准确度和操作反映到显示变化的响应时间是最重要的两个性能参数。为了尽可能的提高动作识别的准确度,缩短操作反映到显示变化的响应时间,尽可能达到实时响应的效果,我们对显示参数、存储参数和图像存储格式都进行了细致的设计,并对于总体资源的使用进行了估计。

3.1.1 设计使用资源

       在估计资源使用情况的过程中,我们主要关心设计对LE和片上存储空间的使用。

对于LE的使用,考虑到Fitting带来的各种延迟会降低系统频率,影响系统的实时性,我们计划使用不超过60 %LE资源。在使用片上的存储空间方面,相对于使用片外存储空间,使用片上存储空间的效率更高,复杂度更低,所以我们计划充分利用片上存储空间。具体的设计使用资源见表1

Resource Types

Expected

to Use

Total

Resources

Percentage Expected

Logic Elements

18,000

33,216

< 60 %

Registers

1,500

34,593

< 5 %

Pins

425

475

89 %

Memory Bits

300,000

483,840

> 60 %

Embedded Multiplier

9-Bit elements

30

70

> 40 %

PLLs

1

4

25 %

1  设计使用资源

3.1.2 设计图像识别参数

       图像识别参数在本设计中至关重要,设计采用台湾友晶公司的TRDB-DC2作为图像采集设备,采集的分辨率为640 x 480。为了确保对用户操作做出响应的实时性,我们设计的识别时间为1 / 60秒,并且要求同步处理,即在扫描过每一屏的象素点后要马上输出识别出的坐标点。本设计的识别算法可以在系统主频较低、资源有限的情况下保证系统的实时性,同时具有较好的抗干扰能力。具体的设计图像识别参数见表2

Det Area

Det Number

Det Time

(Seconds)

Min Det Size

(in Pixels)

Max Det Size

(in Pixels)

640 x 480

2

1 / 60

10 x 10

50 x 50

2  设计图像识别参数

3.1.3 设计支持的显示参数

       考虑到本设计可能应用到各种场合,我们希望本设计能够支持多种分辨率,并且能够达到实时响应的效果。具体的设计支持的显示参数见表3

Format

Response

Time

(Seconds)

Pixel Clock
(MHz)

Horizontal (in Pixels)

Vertical (in Lines)

Active
Video

Front
Porch

Sync
Pulse

Back
Porch

Active
Video

Front
Porch

Sync
Pulse

Back
Porch

640 x 480

60Hz

1/5

25.175

640

16

96

48

480

11

2

31

800 x 600

60Hz

1/4

40.000

800

40

128

88

600

1

4

23

1024 x 768

60Hz

1/3

65.000

1024

24

136

160

768

3

6

29

3  设计支持的显示参数

3.1.4 设计存储参数

存储参数决定了本设计的速度和稳定性,我们计划充分利用访问速度最快的On-Chip Ram和速度较快的Sram。具体的设计存储参数见表4

Function

Resource

Clock
(MHz)

Size

(bits)

Data Width

(bits)

Address Width

(bits)

Display Parameters

Sram

/

12K * 8

16

18

Picture Data

Sram

/

500K * 8

16

18

Character Mask

On-Chip Ram

25.000

4K

8

9

Cursor Mask

On-Chip Ram

25.000

24K

24

10

Title Data

On-Chip Ram

25.000

1K

8

7

Icon Mask

On-Chip Ram

25.000

4K

4

10

4  设计存储参数

3.1.5 设计图像存储参数

图像存储参数决定了本设计的显示效果,我们在资源允许且不影响系统速度的情况下尽可能的提高出出图像的分辨率和色彩深度。具体的设计图像存储参数见表5

Type

Color

Depth

(bits)

Size

Per Unit

(in Pixels)

Max

Number

Total Size

(bits)

Picture

30

< 320 x 240

3

< 512K * 8

Cursor

24

32 x 32

1

24K

Icon

24

16 x 16

4

4K

Character

1

5 x 8

95

4K

5  设计图像存储参数

3.2 实际参数

       在实现本设计的过程中,我们遇到了一些问题。通过对原先的设计参数进行微调,我们解决了所有遇到的问题,取得了比预期还要好的性能和显示效果。本节介绍了本作品的实际参数,其中为方便进行对比,数值上小于设计参数的用绿色数字表示,数值上大于设计参数的用红色数字表示。

3.2.1 实际使用资源

在实现本设计的过程中我们由于更改了部分数据的存储方式,增加了寄存器的使用,并且算法中的乘除法运算数量也超过了预期。由于算法中的乘除法也需要实时进行运算同步输出结果,所以这些乘除法模块不能复用。这样一来实际使用的LE、寄存器和嵌入式乘法器的数量超出了预期,片上存储空间的使用比预期要少。不过Altera高品质的芯片工艺,DE2开发板达到汽车业界工艺水平的布线和QuartusII强大的自动适配功能使得过多的LE使用并没有影响系统的实时性。具体的实际使用资源见表6

Type

Actual

Usage

Total

Resources

Percentage Expected

Percentage of

Actual Usage

Logic Elements

20,334

33,216

< 60 %

61 %

Registers

2408

34,593

< 5 %

7 %

Pins

425

475

89 %

89 %

Memory Bits

123,608

483,840

> 60 %

26 %

Embedded Multiplier 9-Bit elements

34

70

> 40 %

49 %

PLLs

1

4

25 %

25 %

6  设计图像存储参数

3.2.2 实际图像识别参数

       识别部分难度高,不确定性大,干扰很多。我们在计划中提出了低成本、完全实时和定位分辨率高达640 x 480的高要求,在实际实现的过程中,我们解决了多种问题,完成了计划中对图像识别的要求,并且在容错性上取得了相当不错的效果。

具体的实际图像识别参数见表7

Det Area

Det Number

Det Time

(Seconds)

Min Det Size

(in Pixels)

Max Det Size

(in Pixels)

640 x 480

2

1 / 60

3 x 3

70 x 70

7  实际图像识别参数

3.2.3 实际支持的显示参数

由于采用了实时处理的同步识别算法,识别部分实现了完全的实时,使得实际的操作响应时间大大降低。目前本设计的实时性的瓶颈处于访问存储设备地址的计算上。具体的实际支持的显示参数见表8

Format

Response

Time

(Seconds)

Pixel Clock
(MHz)

Horizontal (in Pixels)

Vertical (in Lines)

Active
Video

Front
Porch

Sync
Pulse

Back
Porch

Active
Video

Front
Porch

Sync
Pulse

Back
Porch

640 x 480

60Hz

1/15

25.000

640

16

96

48

480

11

2

32

800 x 600

60Hz

1/15

40.000

800

40

128

88

600

1

4

23

1024 x 768

60Hz

1/10

65.000

1024

24

136

160

768

3

6

29

8  实际显示参数

3.2.4 实际存储参数

在实现本设计的过程中,我们为了保证实时性,将显示参数和标题栏信息改为寄存器存储,这样就省去了计算器访问地址的时间,同时它们的大小也受到了不同程度的限制。由于Sram掉电后数据丢失,我们增加了Flash作为Sram中数据的掉电保护。具体的实际存储参数见表9

Function

Resource

Clock
(MHz)

Size

(bits)

Data

Width

(bits)

Address Width

(bits)

Display Parameters

Register

/

384

12

5

Picture Data

Sram

/

512K * 8

16

18

Data Restore

Flash

/

4M

8

22

Character Mask

On-Chip Ram

25.000

4K

8

9

Left Cursor Mask

On-Chip Ram

25.000

24K

24

10

Right Cursor Mask

On-Chip Ram

25.000

24K

24

10

Title Data

Register

/

768

96

3

Icon Mask

On-Chip Ram

25.000

4K

4

10

9  实际存储参数

3.2.5 实际图像存储参数

在实现本设计的过程中,我们为了获得更好的展示度和实时性,将图片的颜色深度降为15位,所存储的最大图片数量增加到5张,同时还将字模的容量增加到了102个。具体的实际图像存储参数见表10

Type

Color

Depth

(bits)

Size

Per Unit

(in Pixels)

Max

Number

Total Size

(bits)

Picture

15

< 320 x 240

5

512K * 8

Left Cursor

24

32 x 32

1

24K

Right Cursor

24

32 x 32

1

24K

Icon

24

16 x 16

4

4K

Character

1

5 x 8

102

4K

10  实际图像存储参数

(Revision: 2 / 2008-09-12 17:11:58)

4. 设计结构 (Preliminary Paper)

 

       系统设计充分利用FPGA芯片及DE2开发板的硬件资源。系统主要包括红外线发射装置,CMOS图像传感器,DE2开发板和显示设备。其中DE2开发板中FPGASDRAMSRAMFlashEPCS16XSGA 10位数模转换器、24位音频CODEC(虚拟电子琴中使用)等资源。系统实现了图像采集,图像识别,实时定位,动作识别,多层次窗体显示,虚拟电子琴等功能。系统的总体结构图如图4.1所示。
 
图4.1 系统总体结构图
 
       CMOS图像传感器负责图像采集,将数据从GPIO端口输入,经过镜像模块和颜色转换模块处理后存入SDRAM的图像数据缓冲区。
        在片外存储器的使用方面,EPCS16用作FPGA程序的掉电保护,Flash用作显示图片信息的掉电保护,SRAM作为系统显存,SDRAM作为图像数据缓冲区。
        程序的核心部分由数据请求模块、图像识别模块和动作解析模块构成。图像缓冲区内的图像通过数据请求模块以640 x 48060Hz的时序读入图像识别模块。图像识别模块通过读图像的二值化,线段匹配,光斑匹配等实时处理在每一帧的图像数据结束的时候输出2个识别出的坐标,并将其输入动作解析模块。动作解析模块以状态机的方式通过分析最近几帧的定位变化判断操作者的动作,并对显示参数做出相应的修改。

        程序的显示部分由层次化显示控制模块,窗体控制模块,光标控制模块,VGA控制器以及外部的显示输出设备组成。窗体控制模块和光标控制模块分别通过读取参数寄存器,生成对显存的访问地址,然后由层次化显示控制模块根据需要选择一组地址访问外围存储设备,并把得到的数据送回窗体控制模块和光标控制模块,由它们根据数据完成对其相应层的着色,将颜色信息送至层次化显示控制模块,最后由层次化显示控制模块将颜色信息按照显示时序发送VGA控制器。

        在虚拟电子琴的功能中,音频CODEC用来根据输入合成音乐波形,并由Line Out输出到音响或耳机。

        系统的实际演示效果如图4.2所示。4.2 系统实际效果图

 

(Revision: 4 / 2008-09-12 17:23:28)

5. 设计方法 (Final Project Paper)

 

本设计在开发中使用了下列软件工具或硬件设备:
DE2开发板
TRDB-DC2摄像头模组
QuartusII6.1
VS2005
红外滤光片ABS+PMMA f3-5
室外用红外光发射器YM-6080
船舶用3M反光片 SOLAS H3150-1
投影仪
VGA显示器
音箱
       下面详细描述系统中主要模块的实现方法。
5.1 图像识别模块
图像识别模块在整个系统中处于重要地位,识别的速度和稳定性直接决定了系统功能的实现效果。由于对识别的要求较高,我们采用了台湾友晶公司推出的DE2配套摄像头TRDB-DC2,通过I2C模块对其传感器进行配置,采用的图像采集分辨率为640 x 480,访问图像采集缓存的速度为60Hz。该模块的功能框图见图5.1
图5.1 图像识别模块功能框图
识别部分的主要工作是从摄像头采集到的图像中找出两个光斑的位置。如果能够存储所有的图像,一般采用的方法有如下两种:
第一种方法是将所有光点做聚类算法,聚为两类,取每类的中心位置。聚类算法采用K-means就已经足够保证达到非常好的效果,但是由于需要在保存整幅图像的基础上进行大量的迭代运算,既要占用大量的片内RAM,又无法保证处理的速度,可能影响系统的实时性。
第二种方法是求出一帧图像中最大的两个连通分支,将这两个连通分支的中心位置作为识别的结果。此种处理方法能将运算量控制在能够接收的水平,预期的效果也很不错,但仍需要保存整幅图像,占用大量的硬件资源,而且在系统时钟50MHz的情况下需要使用多个时钟周期进行,难以达到实时的设计要求。
为了在有限的存储条件下达到相似的效果,我们研究了这个问题的特殊性。典型的待处理光斑如图5.2所示。通过观察发现,在光斑的每一行基本上是连续的线段,而每一个线段中心和前一行的线段中心较为接近。于是我们利用这个特点设计了如下算法:
1、在获取图像信息的同时从上向下扫描整幅图像;
2、在扫描到某一行时只记录该行中的连续的光斑,从而得到若干个线段;
3、在扫描对某一行进行扫描的同时试图将当前行的线段和上一行的线段进行匹配。如果成功匹配则说明这两条线段来自图像中的同一光斑,累计该光斑已包含的点数;如果匹配失败说明这条线段很可能是一个新的光斑的第一行;
4、如果一个光斑能不再被某一行的线段匹配,说明该行为光斑的正下方;
5、在一帧图像的结尾通过统计扫描过程中的出现的每个光斑的累积点数信息,选出最大的两个光斑作为识别结果,计算它们的坐标并调整它们的编号顺序。
本算法在接收图像信息的同时得出了识别结果,达到了完全的实时性,并且在整个扫描过程中同时记录信息的只有扫描当前行和前一行的线段信息,所以需要的存储空间很小。
在容错性和抗干扰能力方面,由于我们只保留了最大的两个光斑,所以对于图5.3这种有其他较小光点干扰的情况能够很好的解决。为了处理类似于图5.2光斑的倒数第二行中出现的内空点的这种常见扰动,在行内扫描时我们将空了一个点也视为连续线段。这两个机制的结合使本算法对于图5.4这种边缘不平整,图形不规则,内空点较多的情况也能够很好地解决。
实验表明识别效果良好,识别速度达到了完全实时,占用系统资源较少,完全达到了设计的要求。
                
        图5.2 图像识别典型光斑                                图5.3 带有干扰的光斑                                     图5.4 较难识别的光斑
5.2 动作解析模块
       动作解析模块位于图像识别模块之后,其作用是记录最近几帧图像所识别出的坐标,通过其坐标数值和相对位置的变化判断操作者的动作,并对显示参数做出相应的修改。本模块的设计结构为一个状态机和多个计数器,状态转移图比较复杂,为了简明扼要的说明本模块的功能,我们对照图5.5进行阐述。
图5.5 动作解析模块的简化状态转移图
下面我们对本状态机的各个状态的功能进行描述:
Run:状态机的初始状态,其功能为清空所有计数器,在成功取得图像识别模块在本帧图像中识别出的2个坐标时进入状态WaitOtherOper。另外其他状态中出现当前帧的识别点不为2个时,均进入Run状态。
WaitOtherOper:状态机中负责接受指令的状态,所有操作动作结束后均进入本状态。其功能为清空所有计数器,通过2个坐标的相对位置判断用户的行为趋势,即判断用户将要进行的操作是拖动、缩放还是切换图片,选择进入拖动计数状态DragCount或缩放与切换计数状态StateCount
DragCount:拖动动作计数状态,判断本帧中2个坐标的相对位置,如果满足做动作的位置关系,则将拖动动作计数器DragCounter加一。当该计数器达到一定数值时认为用户正在作拖动动作,进入Drag状态。该过判断过程的持续时间不超过1/6秒。
StateCount:缩放与切换动作计数状态,该状态通过分析本帧中2个坐标的相对位置,判断用户正在做的动作是缩放、切换至下层还是切换至上层,并将相应的计数器加一。当计数器SwitchUpCounter达到一定数值时认为用户正在作的动作为切换至上层,进入SwitchUp状态;当该计数器SwitchDownCounter达到一定数值时认为用户正在作的动作为切换至下层,进入SwitchDown状态;当该计数器ResizeCounter达到一定数值时认为用户正在缩放动作,进入Resize状态。由于这三个动作有一定相似性,为了判断用户的动作更近似于哪一种动作,我们在完成一次动作识别以前不对三个计数器清零。完成一次识别的过程不超过1/2秒。
       Drag:拖动动作处理状态,我们将拖动的动作定义为左手保持在右手的左下方,然后移动右手,通过记录右手的位移对窗口的位置进行修改。在修改窗口位置时,我们要确保窗口不会完全的移出当前界面,同时我们还要确保一个临时性的识别扰动造成的突然位移不会影响窗口的位置,故将每一帧用户的操作可以造成窗口的最大位移为30个像素。
       Resize:缩放动作处理状态,我们将缩放的动作定义为左手保持在右手的左上方,然后将两手同时向两侧或中心移动。在修改窗口大小的同时,我们要确保窗口的大小不能小于70 x 1,且不能大于640 x 480。同时我们也要避免临时性的识别扰动,同样规定每一帧对窗口进行的放大或缩小的大小不能超过30个像素。
       SwitchDown:切换至下层状态,我们将切换层的动作定义为左手保持在右手的左上方,左手向左下方移动,右手向右上方移动。如果当前层的下层还有可供显示的窗口,则将当前层切换为该层。
       SwitchUp:切换至上层状态,我们将切换层的动作定义为左手保持在右手的左上方,左手向右上方移动,右手向左下方移动。如果当前层的上层还有可供显示的窗口,则将当前层切换为该层。
5.3 层次化显示模块
       层次化显示模块是系统中最庞大的模块,它主要有以下四个方面的功能:
1、在复位时将Flash中的显存掉电保护信息读出,并写入Sram
2、在显示时序下获取各个控制模块对Sram和片内Ram的访问地址并选出合适的访问地址送到相应设备的地址总线;
3、Sram和片内Ram数据总线上的颜色信息送到提交该地址的窗体控制模块;
4、将各控制模块提交的颜色根据当前的显示参数分层选择,并将最终的显示信息发送给VGA控制器。
层次化的设计保证了本设计在功能上的实时性,保证了多模块对单端口设备同时进行访问时不会产生冲突,同时使各层可以独立控制而不至于影响到其他层的显示效果,为不同层的数据处理提供了方便,也便于日后系统的功能升级。层次化显示模块的功能框图见图5.6
图5.6 层次化显示模块功能框图
下面介绍其中各部分的设计方法。
1、窗体控制模块:窗体控制模块的主要任务是从显示参数寄存器中取得该窗体的显示参数,然后根据窗口的位置、大小和窗口中图片的实际大小对图片进行自由长宽比的缩放,生成Sram的访问地址,根据窗口的层次位置为窗口着色。同时本模块还负责窗体边框,图标和标题栏文字的绘制。窗体控制模块的数量由窗体的数量决定,采用的是统一设计,以方便随时增加或减少窗口。
2、光标控制模块:光标控制模块的主要任务是根据当前桢的光标地址生成地址,访问存储光标图像信息的片内Ram,然后为光标着色。
3、复位处理模块:复位处理模块的主要任务是在系统复位时将Flash中保存的显存掉电保护信息读出,并写入Sram。考虑到Flash的读取速度较慢,而Sram又要从运行时的只读时序改为写时序,这里使用了简单的状态机来满足它们的时序,既保证了正确读写,又使复位后的初始化等待时间控制在了0.5秒以内。
4、地址选择模块:地址选择模块的主要功能是确保多模块对单端口设备同时进行访问时不会产生冲突。具体地讲,本设计中显存采用的Sram、图标存储模块和字模存储模块采用的片内Ram均为单端口设备,而且它们可能同时被多个窗体控制模块所访问。为了解决这种冲突,本模块在获取各模块提交的存储设备访问地址后先判断其中哪一个模块对应的图像在当前位置不会被显示,然后将有可能被显示的模块中较高层模块提交的地址发送到单端口的存储设备。
5、设备冲突访问处理模块:设备冲突访问处理模块的主要功能是实现片内和片外各存储设备的访问时序,然后将地址选择模块选出的访问单端口设备的地址发送到相应存储设备的地址总线,并将相应设备在数据总线上的输出发送到各控制模块。
6、颜色选择模块:颜色选择模块的主要功能是根据层显示参数ViewLayer决定显示哪些层的图像。我们把显示层进行了编号,其数值为0 ~ 7,数值越小的层为上层,数值较大的层为下层。其中第0层和第1层为左光标层和右光标层,为总在最前,SW16的输入为高时显示光标,为低时不显示光标。第2层至第6层为窗口显示层,显示时只显示编号为Viewlayer的层和其下方两层的图像。在显示的过程中优先显示光标层的图像,其次是当前显示范围中较高层的图像。如果较高层图像在某一区域为透明时,该区域会显示下一层的图像。第7层为背景层,目前负责显示图像采集时采集到的光斑以方便我们进行调试,其显示属性为总在最后。SW17的输入为高时显示光斑,为低时不显示。

 

(Draft / 2008-09-12 17:28:31)

6. 设计特点 (Preliminary Paper)

 

(1)    纯硬件。整个功能可完全的设计为IP核,这对算法的保护和大规模应用带来了便利,同时处理速度稳定,在同等的硬件资源条件下处理速度比半软件半硬件实现或全部软件实现有极大的提高。
(2)    全新的输入方式,适应多种应用场景。进入21世纪后,日常生活中的电子产品得到了迅速的发展和广泛的普及,例如显示器日益增大,投影设备被广泛应用和大型数字广告牌的普及。在这种背景下,传统的输入方式诸如鼠标或触摸屏,就难以满足实际应用。于是我们提出了一个全新的输入方式,避免了接触式控制技术的局限性,更加适应日益增大的显示区域的需求,可以在展示大范围影像的同时,实时地进行非接触式人机交互。本设计不但界面友好,操作方便,而且为新一代的数字产品开发和人机交互方式提出了思路。例如互动式电子广告牌、虚拟电子乐器、互动影像、手势切换电视频道等等。
(3)    实时响应、适应性好。本设计的识别算法为纯硬件实现,图像识别模块达到了完全适时处理,动作解析模块的最大延迟仅为1/2秒。同时适应性好,抗干扰能力强,对硬件资源的要求很低。
(4)    层次化的设计方法。在存储设备访问地址的计算和显示输出的功能实现上我们采用了层次化的设计思想,包括光标层,信息层,窗口层和背景层等。在计算存储设备的访问地址时,最终提供给存储设备的访问地址由这几层当时提交的访问地址根据需要选择赋值;在显示输出的处理中,最终显示的图像中的每一点由这几层中对应点根据需要实时叠加而成。层次化的设计保证了本设计在功能上的实时性,避免了不同模块同时访问存储设备时可能产生的冲突,同时使各层可以独立控制而不至于影响到其他层的显示效果,也为不同层的数据处理提供了方便,便于日后系统的功能升级。
(5)    低成本、低功耗,可扩展。系统基于低成本高性价比的Cyclone II FPGA进行设计,在保证功能的前提下充分利用了其片内丰富的存储器和嵌入式乘法器和DE2开发板上的SRAMSDRAMFlashVGA接口以及CCD摄像头等资源,大大压缩了开发周期,降低了系统成本、复杂性和功耗,同时使系统具有极大的灵活性和可扩展性。
(Revision: 3 / 2008-09-12 17:29:48)

7. 总结 (Final Project Paper)

 

       通过近4个月的学习与探索,“基于FPGA的红外人机交互设备”从设想变成了现实,我们对FPGA程序设计也有了更深刻的认识。
我们通过充分利用了DE2开发板丰富的资源和详细的文档以及参考资料,QuartusII软件高效便利的开发环境和Altera公司的低成本高性价比的Cyclone II FPGA,设计了一个操作新颖,表现力强的人机交互系统,降低了开发成本,缩短了开发周期。
同时这次比赛的过程中,我们对FPGA项目的开发过程有了更深刻的认识。通过充分的可行性研究、严谨的项目计划、合理的进度安排和充分的团队合作,我们解决了各方面的困难,圆满地完成了作品,这种经历给我们每一个人都留下了一段美好的回忆和一笔宝贵的财富。
由于时间仓促和资源有限,系统尚有些不令人满意的地方。我们今后计划识别更多的动作以完成更复杂的操作,同时通过设计一些特效和音效进一步提高展示效果。
(Draft / 2008-09-12 17:30:11)