线阵CCD高速图像采集与处理系统

文章描述:-2022年3月29日发(作者:顾莉雅)第30卷 第3期2004年8月大连海事大学学报JournalofDalianMaritimeUniversityVol.30,o.3Aug.,2004文章编号:6(2004)04线阵CCD高速图像采集与处理系统齐国清1,胡晓初2(11大连海事大学信息工程学院,辽宁大连 ;2.大连市建设工程集团有限公司,辽宁大连 

-

线阵CCD高速图像采集与处理系统2022年3月29日发(作者:顾莉雅)



30
卷 第
3

2004

8

大连海事大学学报
JournalofDalianMaritimeUniversity
Vol.30,o.3
Aug.,2004
文章编号
:1006
2
7736
(
2004
)
03
2
0065
2
04
线阵
CCD
高速图像采集与处理系统
齐国清
1
,
胡晓初
2
(
1
1大连海事大学信息工程学院
,
辽宁大连 
116026;
2.
大连市建设工程集团有限公司
,
辽宁大连 
116001
)
Ξ
摘要
:
介绍一种用于铁路轨道缺陷检测的图像采集与处理系统的硬件设计和软件开发
.
该系统采用高速线

CCD
在高速运动状态下获取轨道表面的清晰图像
,CCD
摄像头与采集卡之间采用
CameraLink
方式传递数

,
采集板采用
LVDS
线路接收器
DS90CR288
接收收据
,
数据处理系统采用
TI
浮点
DSP-TMS320VC33
构成
.

论了在
TI

CodeComposer
开发环境下利用
C
和汇编语言开发
VC33
应用程序的方法和应当注意的问题
.
关键词
:
线阵
CCD;
图像采集
;
轨道检测
;
数字信号处理器
中图分类号
:
T918.82
             
文献标识码
:
A
0
 引 言
高速图像采集与处理系统广泛用于纸币印
刷、织物等缺陷检测中
,
由于被检测物体处于高速
运动当中
,
而缺陷检测要求高清晰度高分辨率的
图像
,
因此用普通摄像设备很难获得满足要求的
无模糊图像
.
线阵
CCD
摄像设备每次扫描只对一
条扫描线成像
,
利用被摄物体与
CCD
之间的相对
运动通过连续扫描形成二维图像
.
因此
,
只要线扫
描率足够高
,
可以消除运动模糊
.
轨道缺陷视频检
测系统
,
尤其适合采用高速线阵
CCD.
图像处理数
据量大
,
尤其是实时图像处理对处理器的处理速
度要求非常高
.DSP
具有运算能力强、速度快的特

,
适合于实时处理系统
.
本文介绍利用
TI
浮点
DSP-TMS320VC33
实现的嵌入式线阵
CCD
图像
CameraLink
接收器
,
图像缓冲存储器、
DSP

DSP

序和数据存储器以及由
ISP
实现的时序控制电路

.
1.1
 线阵
CCD
本系统中采用的是德国
BALSER
公司线阵
CCD
2
L101.
在自由扫描状态下
,L101k
按预先设定
的线扫频率自动重复扫描
.L101
直接输出数字信

,
输出数据为
8
位或
10

,
输出信号采用
LVDS
模式
,L101b
采用
ChannelLink
标准
,L101k
采用
CameraLink
标准
,
也可以利用
BALSER
公司提供
的接口转换器
BIC
转换成
RS644LVDS
格式
.
1.2
 
CameraLink
技术
CameraLink
技术的核心是美国
S
(
ational
Semiconductor
)
提出的一种高速数据传输方法———
ChannelLink
技术
,
该技术主要用于数字图像数据
采集与处理系统
.
1
 系统组成
系统组成如图
1
所示
.
包括
CCD
摄像头、
的高速传输
.
两者均采用
LVDS
信号模式
,
但比
先前的传输方法
-RS644
(
RS422

LVDS


)
具有明显的优点
.LVDS
(
LowVoltageDiffer
2
entialSignaling
)
是最近发展起来的一种利用
低电压差分信号模式传输技术
.LVDS
信号
Ξ
收稿日期
:2004
2
04
2
07
1
作者简介
:
齐国清
(
1960
2
)
,

,
辽宁凌海人
,
教授
.
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http:


                  大连海事大学学报             第
30
卷 
66

1
 系统组成框图
为以
+1.2V
为基准
300mV
差分形式
,LVDS
低电
压摆幅差分模式具有高速传输数据时交叉干扰
小、
EMI
干扰小等优点
.ChannelLink
采用
LVDS

式传输数据
,
但是将
28
位数据转换成串行方式在
4
对线路上传输
,
再用另外一对线路传输时钟信
32
位的数据存储器
DRAM
(
2

CY7C1041,
地址

500000H

5FFFFFH,
以及作为开关量输出的
存储器映射
IO

,
对应的地址为
0E00000H

0EFFFFFH.
程序固化在
8
位的
EPROM
(

FLASH
)

,
系统加电时由
DSP
内的
BootLoader
程序自动
加载到
DSP
片内
RAM

PRAM
中运行
.
地址译码
及时序控制信号的产生由一片
ISP
(
ispLS2128VE
)
来完成
.TMS320VC33
需要
3.3V
(
DVDD
)

1.8V
(
CVDD
)
两种电源供电
,
利用
TI
的电源芯片
TPS767D318
可以直接产生
3.3V

1.8V
并同时

,
最高传输率可达
2.38Gbs,
传输距离可达


LVDS
发送器
DS90CR287
完成并行
TTLCMOS
信号到
LVDS
信号的转换
,LVDS
线路
接收器
DS90CR288

LVDS
信号还原成并行
TTL
CMOS
信号
.
1.3
 
DSP
图像采集与处理系统
CCD
输出图像数据经
CameraLink
连线以串
产生
DSP
加电复位信号
RESET.12MHz
外部时钟
直接加到
DSP

EXTCLK

,CLKMD1

CLKMD0
均接高电平
,
使
DSP
内部
PLL
工作在
5
倍频状态
,
产生
120MHz
内部时钟信号
H1.
行方式接口连到图像采集板
,

LVDS
线路接收

DS90CR288
将其恢复成并行
TTLCMOS
信号
,
并分离出
8
位图像数据和像素时钟信号
PixClk

行有效信号
LineValid.

512
行构成一幅图像保
存在由
512k
×
8

SRAM
(
CY7C1049
)
构成的输入
图像缓冲存储器
BRAM
当中
,
图像的写入控制信
号和地址由
ISP
根据
PixClk

LineValid
信号产

.
处理器采用
TI

32
位浮点
DSPC3x
系列的
最新产品———
TMS320VC33.
由于
DSP
片内存储器仅有
34k
×
32

,
远远
不能满足系统的要求
,
在片外设置了
4
个存储区
:
512k
×
8
位输入图像缓冲存储器
BRAM
(
1

CY7C1049
)
,
占用
DSP
系统中的地址为
0C00000H
2
 
DSP
软件开发
VC33
的外部存储器及
DMA
、定时器和串行
通信口等外部接口设备都是在相应的控制寄存器
的控制下工作的
,
因此程序开始运行前要对这些
控制寄存器进行适当的设置
.
外部存储器控制寄
存器
(
存储器映射地址为
808064h
)
中的
WTCT

(
7

5

)
用来设定
DSP
对外存储器进行操作时
插入的等待周期数
,
以适应不同速度的存储器
.
WTCT
的默认值时
111,
即插入
7
个等待周期
,

不需要插入这么多等待周期
,
则应当在程序开始
处首先将外部存储器控制寄存器的
WTCT
设为
相应的值
.
本系统中
DSP
时钟频率为
120MHz,

应的指令周期约为
8.3ns,
而外部存储器
CY7C1041

CY7C1049
的读写周期为
20ns,
因此

0CFFFFFH,512k
×
8
位的图像存储器
IRAM
(
1

CY7C1049
)
,
地址为
600000H

6FFFFFH,
固化
程序的
512k
×
8

EPROM,
地址为
000000H

3FFFFFH,256k
×
32
位的程序存储器
PRAM
(
2

CY7C1041
)
,
地址为
400000H

4FFFFFH,256k
×
需要插入
2
个等待周期
.
决定
EPROM
(
FLASH
)

等待周期的总线控制寄存器控制字已经和程序代
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http:



3
期         齐国清
,

:
线阵
CCD
高速图像采集与处理系统           
67
码一起写到了
EPROM

.
TI
的浮点
DSP
集成开发软件
CodeComposer
支持用
C
语言开发程序
,
使用
C
编译器时应注意

(
Heap
)
和栈
(
Stack
)
的长度的设定
.C
编译器支

malloc
()
函数进行存储器的动态分配
,
动态存
储器的分配是在堆中进行的
.C
编译器使用一个
专用的未初始化的段
.sysmem
来构造堆
.
堆的默
认长度为
1k,
若程序中需要进行动态分配存储器
的空间大于
1k,
则应当在
linker
的2
heap
选项中设
定堆的大小
.C
编译器用栈保存函数调用时传递
参数和返回地址、分配局部变量及保存临时结果
,
C
编译器使用一个专用的未初始化的段
.stack

构造栈
,C
编译器为栈设的默认长度也是
1k.C

译器并不检测栈的溢出
,
因此应当保证栈足够大
.
若程序中需要更长的栈
,
例如程序中使用了较大
的局部数组变量
,
则应当在
linker
的2
stack
选项中
设定栈的大小
.
而程序中的全局变量和静态变量

.bss
段中分配
.
由于系统的存储器空间有限
,
堆、栈及
.bss
段都要在数据存储器中分配
,
因此堆
和栈的长度要根据程序的实际需要合理设定
.
C
编译器默认的存储模式为
smallmodel,
即存
var=1;
......

C
程序中访问汇编程序中定义的常量则与访
问汇编变量不同
.
汇编变量在符号表
(
symbol
table
)
中存放的是该变量的存储地址
,
而对于常量
符号表中存放的是该常量的值
.
编译器无法区分
符号表中哪一个是地址
,
哪一个是值
.
若在
C

直接读汇编常量
(
byname
)
,
则编译器将该常量的
值当作地址再去读对应的存储单元的值
.
为了避
免这种错误
,
可在
C
中使用取地址符号
(
&
)
得到
汇编常量的地址
.

-
x
为汇编常量
,

C
中用
&x
获得
x
的值
.
下面程序中在汇编程序中定义了长
度为
1000
的常数表
table
-
size,
并将其声明为
global
型的
.

C
程序中借助强制类型转换
(
cast
)
获得其地址并赋给
TABLE
-
SIZE.
asmprogram:

   
1000
--
size
 
.global
-
table
-
size
储全局变量和静态变量的
.bss
段小于
64k.
此时
C
编译器只在程序开始运行时设定
DP
寄存器值
,
使其指向
.bss
段的开始处
,
在程序运行过程中访

static
变量、
global
变量及
ctanttable
时不再修

DP

.
因此
,

.bss
段的实际长度大于
64k

,
必须选择
bigmodel.
这样
,C
编译器每次访问
.bss
段中全局变量和静态变量时会自动设置
DP

,
否则将得不到正确的地址
.
在汇编程序中定义的
局部的符号变量
(
symbol
)
一般是与代码一起在
.
text
段分配存储单元的
,

.bss
段与
.text
段一般
 
......
C
 
proram:
extern
 
inttable
-
size;
#defineTABLE-SIZE
((
int
)(
&table
-
size
))
for
(
int=0;i-
SIZE;i++
)
......
TI
浮点
DSPC3x4x

C
编译器支持
ASIC

int
型及
float
等数据类型
,
但应注意与
PC

WIDOWS

DOS
系统下
C
的对应的数据类型含
是分别在不同的
RAM

.
因此在汇编程序中交替
访问
C
变量和汇编程序中定义的
symbol

,
每次
都要设置
DP
寄存器的值
,
才能得到正确的地址
.

C
程序中也可以访问汇编程序中定义的
变量和常量
.
下例中在汇编的
.bss
段将
var
说明

global

(
下划线表示是
C
变量
)

C
中将其说
明为
extern
的就可以访问该变量
.
asm
 
program:
.bss
  
-
var,1
.global
......
C
 
proram:
externintvar;
-
var
义并不完全相同
.C3x
存储器宽度为
32

,char

short

int

long
型均为
32

,
而且只占一个存储
单元
.float
型和
double
等价
,
也各占一个存储单

.
而在
PC
机中
,
由于存储器的宽度为
8

,
不同
数据类型占据的存储单元数不相同
.ASIC
的操
作符
sizeof
可以测出一个数据类型所占的存储单
元数
.
例如
,

int

16
位整数
,

sizeof
(
int
)
=
2.
而在
C3x

C

sizeof
(
int
)
=1.
因此
,

DSP

PC
机之间交换数据时
,
应注意数据类型的含
义不同引起的存储区别
.
通过仿真器可以利用
C
的文件操作函数对主机的文件进行读写
.
例如
,

用这种方式可以从主机读取图像文件
,
读取
bmp
文件的文件头
BITMAPFILEHEADER
结构和
BITMAPIFOHEADER
结构时
,
由于
bmp
文件的文
件头包含不同的数据类型
,
赋给
DSP
中相应的
C
变量时
,
应将若干个字节合并在一起
.
例如
,
BITMAPFILEHEADER
的前两个字节为
WORD

© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http:


                  大连海事大学学报             第
30
卷 
68
bfType,
其后的
4
个字节为
DWORD

bfSize.
利用
下面方法可以将从打开文件中读进的前两个字节
合并一起赋给变量
bfType,
其后
4
个字节赋给变

bfSize.
BITMAPFILEHEADERbf;
chartemp2[2];
chartemp4[4];
.........
(
c:c33testbmptest

fpi=fopen
““
,rb
)
;+

fread
(
temp2,1,2,fpi
)
;
=temp2[0]+
(
temp2[1]<<8
)
;
fread
(
temp4,1,4,fpi
)
;
=temp4[0]+
(
temp4[1]<<8
)
+
(
temp4[2]<<16
)
+
(
temp4[3]<<24
)
;
.........
C
程序调用汇编函数时有两种不同的参数传
载到
DSP
内部
RAM
或目标板上的
SRAM.
若要将
程序固化到
EPROM

FLASH,
则由于常用的
E
2
PROM
编程器不接受
COFF
格式文件
,
需利用
TI
提供的格式转换工具
hex30
将其转换成常用的
hex
格式
.
固化程序中需提供程序的入口地址
,

加载后程序运行的开始地址
.
对于
C
代码
,
程序
的入口地址为
-
c
-
int00,
-
c
-
int00
的地址可以在
连接时生成的
map
文件中到
,
并在运行
hex30
时在命令行用
-e
选项提供给格式转换工具
.


hex30
时还需要由一个
cmd
文件提供总线控制
寄存器控制字、
ROM
芯片宽度、存储器字宽度等
参数
.
3
 结束语
本文介绍了为铁路轨道缺陷视频检测系统开
发的线阵
CCD
图像采集与处理设备
,
该系统利用
TI
的浮点
DSP-TMS320VC33
实现了对
BALSER
公司线阵
CCD-L101
输出数据的采集与处理
.

实际应用中
,
由于要求进行连续采集与处理
,
因此
一个
DSP
不能满足要求
.
在实验中
.
我们采用了
两个
DSP
并行工作的方式
,
实现了图像的连续采
集与处理
.
若物体运动速度更快或图像处理算法
更复杂时则采用更多个
DSP
并行处理
,
或采用性
能更强的
DSP,

TI

64x
系列
DSP.
递方式
,
即寄存器方式和栈方式
.C
编译器的默认
方式为栈方式
.
在栈方式下
,
实时运行支持库可选
,
若采用寄存器参数传递参数方式
,
则实
时运行支持库应选
,
而且编译选项中的
运行模式选项应选
-mr.
C3x

linker
生成的目标文件
(
.out
文件
)

COFF
格式的
,
在仿真状态下可直接将
.out
文件加
参 考 文 献
:
[1]
柴雪松
,
杨凤春
,
罗 林
.
轨道视频检查系统
[J].
中国铁路
,2001
(
6
)
,59
2
60.
[2]BALSERL100bSeriesUser

sManual[Z].BaslerVisionTechnologies,2001.
[3]TMS320C3xUser

sGuide[Z].TexasInstrumentsIncorporated,1997.
LinescanCCDhighspeedimageacquisitionandprocessingsystem
QIGuo
2
qing
1
,HUXiao
2
chu
2
(
1
.e,
DalianMaritimeUniv.,Dailan116026,China;
.,Dalian116001,China
)
Abstract:Animageacquisitiontem
employslinescanCCDtoacquire
imagedataaretransferredtotheacquisitionboardinCameraLinkformatandtheboardreceivestheimagedatawith
ationalSemiconductor

geprocessingsystemisbasedonTI

sfloating-point
redevelopmenttechniquesusingTI

sCodeComposerwithCandassemblylanguageare
alsodiscussed.
Keywords:linescanCCD;imageacquisition;railtrackflawdetection;digitalsignalprocessor
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http:



30
卷 第
3

2004

8

大连海事大学学报
JournalofDalianMaritimeUniversity
Vol.30,o.3
Aug.,2004
文章编号
:1006
2
7736
(
2004
)
03
2
0065
2
04
线阵
CCD
高速图像采集与处理系统
齐国清
1
,
胡晓初
2
(
1
1大连海事大学信息工程学院
,
辽宁大连 
116026;
2.
大连市建设工程集团有限公司
,
辽宁大连 
116001
)
Ξ
摘要
:
介绍一种用于铁路轨道缺陷检测的图像采集与处理系统的硬件设计和软件开发
.
该系统采用高速线

CCD
在高速运动状态下获取轨道表面的清晰图像
,CCD
摄像头与采集卡之间采用
CameraLink
方式传递数

,
采集板采用
LVDS
线路接收器
DS90CR288
接收收据
,
数据处理系统采用
TI
浮点
DSP-TMS320VC33
构成
.

论了在
TI

CodeComposer
开发环境下利用
C
和汇编语言开发
VC33
应用程序的方法和应当注意的问题
.
关键词
:
线阵
CCD;
图像采集
;
轨道检测
;
数字信号处理器
中图分类号
:
T918.82
             
文献标识码
:
A
0
 引 言
高速图像采集与处理系统广泛用于纸币印
刷、织物等缺陷检测中
,
由于被检测物体处于高速
运动当中
,
而缺陷检测要求高清晰度高分辨率的
图像
,
因此用普通摄像设备很难获得满足要求的
无模糊图像
.
线阵
CCD
摄像设备每次扫描只对一
条扫描线成像
,
利用被摄物体与
CCD
之间的相对
运动通过连续扫描形成二维图像
.
因此
,
只要线扫
描率足够高
,
可以消除运动模糊
.
轨道缺陷视频检
测系统
,
尤其适合采用高速线阵
CCD.
图像处理数
据量大
,
尤其是实时图像处理对处理器的处理速
度要求非常高
.DSP
具有运算能力强、速度快的特

,
适合于实时处理系统
.
本文介绍利用
TI
浮点
DSP-TMS320VC33
实现的嵌入式线阵
CCD
图像
CameraLink
接收器
,
图像缓冲存储器、
DSP

DSP

序和数据存储器以及由
ISP
实现的时序控制电路

.
1.1
 线阵
CCD
本系统中采用的是德国
BALSER
公司线阵
CCD
2
L101.
在自由扫描状态下
,L101k
按预先设定
的线扫频率自动重复扫描
.L101
直接输出数字信

,
输出数据为
8
位或
10

,
输出信号采用
LVDS
模式
,L101b
采用
ChannelLink
标准
,L101k
采用
CameraLink
标准
,
也可以利用
BALSER
公司提供
的接口转换器
BIC
转换成
RS644LVDS
格式
.
1.2
 
CameraLink
技术
CameraLink
技术的核心是美国
S
(
ational
Semiconductor
)
提出的一种高速数据传输方法———
ChannelLink
技术
,
该技术主要用于数字图像数据
采集与处理系统
.
1
 系统组成
系统组成如图
1
所示
.
包括
CCD
摄像头、
的高速传输
.
两者均采用
LVDS
信号模式
,
但比
先前的传输方法
-RS644
(
RS422

LVDS


)
具有明显的优点
.LVDS
(
LowVoltageDiffer
2
entialSignaling
)
是最近发展起来的一种利用
低电压差分信号模式传输技术
.LVDS
信号
Ξ
收稿日期
:2004
2
04
2
07
1
作者简介
:
齐国清
(
1960
2
)
,

,
辽宁凌海人
,
教授
.
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http:


                  大连海事大学学报             第
30
卷 
66

1
 系统组成框图
为以
+1.2V
为基准
300mV
差分形式
,LVDS
低电
压摆幅差分模式具有高速传输数据时交叉干扰
小、
EMI
干扰小等优点
.ChannelLink
采用
LVDS

式传输数据
,
但是将
28
位数据转换成串行方式在
4
对线路上传输
,
再用另外一对线路传输时钟信
32
位的数据存储器
DRAM
(
2

CY7C1041,
地址

500000H

5FFFFFH,
以及作为开关量输出的
存储器映射
IO

,
对应的地址为
0E00000H

0EFFFFFH.
程序固化在
8
位的
EPROM
(

FLASH
)

,
系统加电时由
DSP
内的
BootLoader
程序自动
加载到
DSP
片内
RAM

PRAM
中运行
.
地址译码
及时序控制信号的产生由一片
ISP
(
ispLS2128VE
)
来完成
.TMS320VC33
需要
3.3V
(
DVDD
)

1.8V
(
CVDD
)
两种电源供电
,
利用
TI
的电源芯片
TPS767D318
可以直接产生
3.3V

1.8V
并同时

,
最高传输率可达
2.38Gbs,
传输距离可达


LVDS
发送器
DS90CR287
完成并行
TTLCMOS
信号到
LVDS
信号的转换
,LVDS
线路
接收器
DS90CR288

LVDS
信号还原成并行
TTL
CMOS
信号
.
1.3
 
DSP
图像采集与处理系统
CCD
输出图像数据经
CameraLink
连线以串
产生
DSP
加电复位信号
RESET.12MHz
外部时钟
直接加到
DSP

EXTCLK

,CLKMD1

CLKMD0
均接高电平
,
使
DSP
内部
PLL
工作在
5
倍频状态
,
产生
120MHz
内部时钟信号
H1.
行方式接口连到图像采集板
,

LVDS
线路接收

DS90CR288
将其恢复成并行
TTLCMOS
信号
,
并分离出
8
位图像数据和像素时钟信号
PixClk

行有效信号
LineValid.

512
行构成一幅图像保
存在由
512k
×
8

SRAM
(
CY7C1049
)
构成的输入
图像缓冲存储器
BRAM
当中
,
图像的写入控制信
号和地址由
ISP
根据
PixClk

LineValid
信号产

.
处理器采用
TI

32
位浮点
DSPC3x
系列的
最新产品———
TMS320VC33.
由于
DSP
片内存储器仅有
34k
×
32

,
远远
不能满足系统的要求
,
在片外设置了
4
个存储区
:
512k
×
8
位输入图像缓冲存储器
BRAM
(
1

CY7C1049
)
,
占用
DSP
系统中的地址为
0C00000H
2
 
DSP
软件开发
VC33
的外部存储器及
DMA
、定时器和串行
通信口等外部接口设备都是在相应的控制寄存器
的控制下工作的
,
因此程序开始运行前要对这些
控制寄存器进行适当的设置
.
外部存储器控制寄
存器
(
存储器映射地址为
808064h
)
中的
WTCT

(
7

5

)
用来设定
DSP
对外存储器进行操作时
插入的等待周期数
,
以适应不同速度的存储器
.
WTCT
的默认值时
111,
即插入
7
个等待周期
,

不需要插入这么多等待周期
,
则应当在程序开始
处首先将外部存储器控制寄存器的
WTCT
设为
相应的值
.
本系统中
DSP
时钟频率为
120MHz,

应的指令周期约为
8.3ns,
而外部存储器
CY7C1041

CY7C1049
的读写周期为
20ns,
因此

0CFFFFFH,512k
×
8
位的图像存储器
IRAM
(
1

CY7C1049
)
,
地址为
600000H

6FFFFFH,
固化
程序的
512k
×
8

EPROM,
地址为
000000H

3FFFFFH,256k
×
32
位的程序存储器
PRAM
(
2

CY7C1041
)
,
地址为
400000H

4FFFFFH,256k
×
需要插入
2
个等待周期
.
决定
EPROM
(
FLASH
)

等待周期的总线控制寄存器控制字已经和程序代
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http:



3
期         齐国清
,

:
线阵
CCD
高速图像采集与处理系统           
67
码一起写到了
EPROM

.
TI
的浮点
DSP
集成开发软件
CodeComposer
支持用
C
语言开发程序
,
使用
C
编译器时应注意

(
Heap
)
和栈
(
Stack
)
的长度的设定
.C
编译器支

malloc
()
函数进行存储器的动态分配
,
动态存
储器的分配是在堆中进行的
.C
编译器使用一个
专用的未初始化的段
.sysmem
来构造堆
.
堆的默
认长度为
1k,
若程序中需要进行动态分配存储器
的空间大于
1k,
则应当在
linker
的2
heap
选项中设
定堆的大小
.C
编译器用栈保存函数调用时传递
参数和返回地址、分配局部变量及保存临时结果
,
C
编译器使用一个专用的未初始化的段
.stack

构造栈
,C
编译器为栈设的默认长度也是
1k.C

译器并不检测栈的溢出
,
因此应当保证栈足够大
.
若程序中需要更长的栈
,
例如程序中使用了较大
的局部数组变量
,
则应当在
linker
的2
stack
选项中
设定栈的大小
.
而程序中的全局变量和静态变量

.bss
段中分配
.
由于系统的存储器空间有限
,
堆、栈及
.bss
段都要在数据存储器中分配
,
因此堆
和栈的长度要根据程序的实际需要合理设定
.
C
编译器默认的存储模式为
smallmodel,
即存
var=1;
......

C
程序中访问汇编程序中定义的常量则与访
问汇编变量不同
.
汇编变量在符号表
(
symbol
table
)
中存放的是该变量的存储地址
,
而对于常量
符号表中存放的是该常量的值
.
编译器无法区分
符号表中哪一个是地址
,
哪一个是值
.
若在
C

直接读汇编常量
(
byname
)
,
则编译器将该常量的
值当作地址再去读对应的存储单元的值
.
为了避
免这种错误
,
可在
C
中使用取地址符号
(
&
)
得到
汇编常量的地址
.

-
x
为汇编常量
,

C
中用
&x
获得
x
的值
.
下面程序中在汇编程序中定义了长
度为
1000
的常数表
table
-
size,
并将其声明为
global
型的
.

C
程序中借助强制类型转换
(
cast
)
获得其地址并赋给
TABLE
-
SIZE.
asmprogram:

   
1000
--
size
 
.global
-
table
-
size
储全局变量和静态变量的
.bss
段小于
64k.
此时
C
编译器只在程序开始运行时设定
DP
寄存器值
,
使其指向
.bss
段的开始处
,
在程序运行过程中访

static
变量、
global
变量及
ctanttable
时不再修

DP

.
因此
,

.bss
段的实际长度大于
64k

,
必须选择
bigmodel.
这样
,C
编译器每次访问
.bss
段中全局变量和静态变量时会自动设置
DP

,
否则将得不到正确的地址
.
在汇编程序中定义的
局部的符号变量
(
symbol
)
一般是与代码一起在
.
text
段分配存储单元的
,

.bss
段与
.text
段一般
 
......
C
 
proram:
extern
 
inttable
-
size;
#defineTABLE-SIZE
((
int
)(
&table
-
size
))
for
(
int=0;i-
SIZE;i++
)
......
TI
浮点
DSPC3x4x

C
编译器支持
ASIC

int
型及
float
等数据类型
,
但应注意与
PC

WIDOWS

DOS
系统下
C
的对应的数据类型含
是分别在不同的
RAM

.
因此在汇编程序中交替
访问
C
变量和汇编程序中定义的
symbol

,
每次
都要设置
DP
寄存器的值
,
才能得到正确的地址
.

C
程序中也可以访问汇编程序中定义的
变量和常量
.
下例中在汇编的
.bss
段将
var
说明

global

(
下划线表示是
C
变量
)

C
中将其说
明为
extern
的就可以访问该变量
.
asm
 
program:
.bss
  
-
var,1
.global
......
C
 
proram:
externintvar;
-
var
义并不完全相同
.C3x
存储器宽度为
32

,char

short

int

long
型均为
32

,
而且只占一个存储
单元
.float
型和
double
等价
,
也各占一个存储单

.
而在
PC
机中
,
由于存储器的宽度为
8

,
不同
数据类型占据的存储单元数不相同
.ASIC
的操
作符
sizeof
可以测出一个数据类型所占的存储单
元数
.
例如
,

int

16
位整数
,

sizeof
(
int
)
=
2.
而在
C3x

C

sizeof
(
int
)
=1.
因此
,

DSP

PC
机之间交换数据时
,
应注意数据类型的含
义不同引起的存储区别
.
通过仿真器可以利用
C
的文件操作函数对主机的文件进行读写
.
例如
,

用这种方式可以从主机读取图像文件
,
读取
bmp
文件的文件头
BITMAPFILEHEADER
结构和
BITMAPIFOHEADER
结构时
,
由于
bmp
文件的文
件头包含不同的数据类型
,
赋给
DSP
中相应的
C
变量时
,
应将若干个字节合并在一起
.
例如
,
BITMAPFILEHEADER
的前两个字节为
WORD

© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http:


                  大连海事大学学报             第
30
卷 
68
bfType,
其后的
4
个字节为
DWORD

bfSize.
利用
下面方法可以将从打开文件中读进的前两个字节
合并一起赋给变量
bfType,
其后
4
个字节赋给变

bfSize.
BITMAPFILEHEADERbf;
chartemp2[2];
chartemp4[4];
.........
(
c:c33testbmptest

fpi=fopen
““
,rb
)
;+

fread
(
temp2,1,2,fpi
)
;
=temp2[0]+
(
temp2[1]<<8
)
;
fread
(
temp4,1,4,fpi
)
;
=temp4[0]+
(
temp4[1]<<8
)
+
(
temp4[2]<<16
)
+
(
temp4[3]<<24
)
;
.........
C
程序调用汇编函数时有两种不同的参数传
载到
DSP
内部
RAM
或目标板上的
SRAM.
若要将
程序固化到
EPROM

FLASH,
则由于常用的
E
2
PROM
编程器不接受
COFF
格式文件
,
需利用
TI
提供的格式转换工具
hex30
将其转换成常用的
hex
格式
.
固化程序中需提供程序的入口地址
,

加载后程序运行的开始地址
.
对于
C
代码
,
程序
的入口地址为
-
c
-
int00,
-
c
-
int00
的地址可以在
连接时生成的
map
文件中到
,
并在运行
hex30
时在命令行用
-e
选项提供给格式转换工具
.


hex30
时还需要由一个
cmd
文件提供总线控制
寄存器控制字、
ROM
芯片宽度、存储器字宽度等
参数
.
3
 结束语
本文介绍了为铁路轨道缺陷视频检测系统开
发的线阵
CCD
图像采集与处理设备
,
该系统利用
TI
的浮点
DSP-TMS320VC33
实现了对
BALSER
公司线阵
CCD-L101
输出数据的采集与处理
.

实际应用中
,
由于要求进行连续采集与处理
,
因此
一个
DSP
不能满足要求
.
在实验中
.
我们采用了
两个
DSP
并行工作的方式
,
实现了图像的连续采
集与处理
.
若物体运动速度更快或图像处理算法
更复杂时则采用更多个
DSP
并行处理
,
或采用性
能更强的
DSP,

TI

64x
系列
DSP.
递方式
,
即寄存器方式和栈方式
.C
编译器的默认
方式为栈方式
.
在栈方式下
,
实时运行支持库可选
,
若采用寄存器参数传递参数方式
,
则实
时运行支持库应选
,
而且编译选项中的
运行模式选项应选
-mr.
C3x

linker
生成的目标文件
(
.out
文件
)

COFF
格式的
,
在仿真状态下可直接将
.out
文件加
参 考 文 献
:
[1]
柴雪松
,
杨凤春
,
罗 林
.
轨道视频检查系统
[J].
中国铁路
,2001
(
6
)
,59
2
60.
[2]BALSERL100bSeriesUser

sManual[Z].BaslerVisionTechnologies,2001.
[3]TMS320C3xUser

sGuide[Z].TexasInstrumentsIncorporated,1997.
LinescanCCDhighspeedimageacquisitionandprocessingsystem
QIGuo
2
qing
1
,HUXiao
2
chu
2
(
1
.e,
DalianMaritimeUniv.,Dailan116026,China;
.,Dalian116001,China
)
Abstract:Animageacquisitiontem
employslinescanCCDtoacquire
imagedataaretransferredtotheacquisitionboardinCameraLinkformatandtheboardreceivestheimagedatawith
ationalSemiconductor

geprocessingsystemisbasedonTI

sfloating-point
redevelopmenttechniquesusingTI

sCodeComposerwithCandassemblylanguageare
alsodiscussed.
Keywords:linescanCCD;imageacquisition;railtrackflawdetection;digitalsignalprocessor
© 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http:

-

线阵CCD高速图像采集与处理系统

发布时间:2022-03-29 22:32:29
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 13 条评论,10人围观)
插座十大品牌V铁粉12 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
CCD摄像头与采集卡之间采用CameraLink方式传递数据
张家界美食V铁粉29 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
在程序运行过程中访问static变量
大蒜的营养价值V铁粉10 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
也可以利用BALSER公司提供的接口转换器BIC转换成RS644LVDS格式.1.2 CameraLink技术CameraLink技术的核心是美国S(ationalSemiconductor)提出的一种高速数据传输方法———ChannelLink技术
凡士林护手霜V铁粉5 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
尤其是实时图像处理对处理器的处理速度要求非常高.DSP具有运算能力强
羊角乳V铁粉4 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
系统加电时由DSP内的BootLoader程序自动加载到DSP片内RAM或PRAM中运行.地址译码及时序控制信号的产生由一片ISP(ispLS2128VE)来完成.TMS320VC33需要3.3V(DVDD)和1.8V(CVDD)两种电源供电
中国的V铁粉30 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
再用另外一对线路传输时钟信32位的数据存储器DRAM(2片CY7C1041
金朝中都V铁粉19 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
由LVDS线路接收器DS90CR288将其恢复成并行TTLCMOS信号
徐嘉伟V铁粉12 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
在C中用&x获得x的值.下面程序中在汇编程序中定义了长度为1000的常数表table-size
西安二手网V铁粉10 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
速度快的特点
产妇吃什么好V铁粉21 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
必须选择bigmodel.这样
桑白皮疤痕膏多少钱V铁粉17 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
数据处理系统采用TI浮点DSP-TMS320VC33构成.讨论了在TI的CodeComposer开发环境下利用C和汇编语言开发VC33应用程序的方法和应当注意的问题.关键词
万豪酒店集团V铁粉0 second ago Google Chrome 93.0.4577.82 Windows 10 x64
地址为500000H~5FFFFFH