第12章 图像边缘检测器的设计与分析 12.1 系统设计要求 12.2 系统设计方案 12.3 主要LPM原理图和VHDL源程序

Slides:



Advertisements
Similar presentations
什么是SOPC: SOPC是英文System On a Programmable Chip的缩写,称为片上可编程系统。SOPC将传统的EDA技术、计算机系统、嵌入式系统、数字信号处理等融为一体,综合了各自的优势,且在结构上形成一块芯片。 为什么用SOPC:SOPC是现代电子技术和电子系统设计的发展趋势,建立了电子系统设计的新模式。用户利用SOPC开发平台,自行设计高速、高性能的DSP处理器、特定功能的CPU及其外围接口电路,创建结构最为简洁的电子系统。
Advertisements

藉由經營權異動入主上櫃公司規章修正宣導 證券櫃檯買賣中心 上櫃監理部
第十五章 控制方法.
做实验过程中发现的问题: 新建时工程文件夹建立了,但所建实体文件并没存放在其中 文件名不能用汉字
組員:4A140013張瓊云 4A1I0039石宜芬 4A1I0909許峻綱 指導老師:王立杰老師
《 E D A 技 术》 课 程 教 学 讲授:伍宗富 湖南文理学院电气与信息工程学院 2017年3月19日星期日.
第4章 VHDL设计初步.
幼兒美勞試教 我想飛~~~~~ 四幼二A D 莊小萱 D 林昀儒 D 劉思妤
指導老師:陳韻如 班級:幼保二甲 姓名:林靜宜 學號:4A0I0033
国产动画 ——童年的回忆.
第6章 VHDL设计应用实例 6.1 8位加法器的设计 6.3 序列检测器的设计 6.4 正负脉宽数控调制信号发生器的设计
电工电子实验中心.
EPF10K10TI144-4晶片燒錄.
第三章 组合逻辑电路 第一节 组合电路的分析和设计 第二节 组合逻辑电路中的竞争与冒险 第三节 超高速集成电路硬件描述语言VHDL
題目:十六對一多工器 姓名:李國豪 學號:B
第1章 FPGA概述 1.1 FPGA的发展历程 1.2 FPGA的基本原理 1.3 FPGA的设计方法 1.4 FPGA的设计流程
VHDL數位電路實習與專題設計 文魁資訊-UE301
第3章 DSP Builder设计入门 3.1 DSP Builder及其设计流程 3.2 DSP Builder设计向导
VHDL數位電路實習與專題設計 文魁資訊-UE301
8.9二进制振幅键控(ASK) 调制器与解调器设计
組員: 葉子青 何妍慧 陳錫明周藹盈 布信南 許迪生
VHDL 硬體描述語言 數位電路設計實務 第四章 VHDL 的語言結構.
第4章 常用EDA工具软件操作指南 4.1 Lattice ispEXPERT 操作指南
VHDL 硬體描述語言 數位電路設計實務 第六章 函數副程序以及套件程式庫.
EDA原理及应用 何宾
使用VHDL設計—4位元減法器 通訊一甲 B 楊穎穆.
EDA原理及应用 何宾
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
计数器分析 一、计数器的功能和分类 1、计数器的作用 记忆输入脉冲的个数,用于定时、分频、产生节拍脉冲及进行数字运算等等。 2、计数器的分类
第六章 采用中、大规模 集成电路的逻辑设计.
第九章 数字系统设计 数字系统设计概述 ASM图、MDS图以及 ASM图至MDS图的转换 数字密码引爆器系统设计 数字系统设计实例 小结.
经济生活模块备考知识.
第五章 时序逻辑电路 5.1 时序逻辑电路的分析方法 5.2 常用时序逻辑 5.3 时序逻辑电路的设计方法 本章小结.
第四阶段实验 ISP器件的设计与应用 一、实验目的 二、实验内容与要求 三、ISP器件的开发流程 四、EDA Pro2K实验系统介绍
欢迎参加VHDL培训 VHDL培训教程 浙江大学电子信息技术研究所 电子设计自动化(EDA)培训中心
第13章 数字电路基础 13.1 数字电路概述 13.2 数字电路中的数值与码制 13.3 逻辑代数 13.4 逻辑门电路
使用VHDL設計—向上&向下計數器 通訊一甲 B 楊穎穆.
使用VHDL設計-XOR_GATE 通訊一甲 B 楊穎穆.
第2章 Quartus II设计向导 2.1 频率计的VHDL设计 2.2 使用宏功能块设计频率计 2.3 嵌入式系统块ESB的应用
第14章 其它DSP设计库 14.1 总线控制库 14.2 复数信号库 14.3 Gates库 14.4 状态机函数库
使用VHDL設計--Moore Machine
EDA 技术实用教程 第 5 章 QuartusII 应用向导.
第五章 VHDL设计基础 本章重点: 本章难点: VHDL程序结构 VHDL的基本数据类型 VHDL的基本描述语句 基本组合逻辑电路设计
第六章 VHDL设计共享.
第五章 VHDL主要描述语句.
移相正弦信号发生器设计 采用直接数字综合器DDS发生器的设计 原理:图1是此电路模型图
使用VHDL設計—4位元ALU電路 通訊一甲 B 楊穎穆.
第一次上机安排 第六周 第七周 周一晚(提高1、2,通信001~012) 周二上(通信014~085) 周四上(通信086~154)
抢答器 设计一个2人抢答器。要求如下: 设计任务 1.两人抢答,先抢为有效,用发光二极 管显示是否抢到优先答题权。
计算机学院 数字逻辑实验的要求.
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
北投溫泉博物館 建築特色 ★小組成員:高103林孟璇、林念儀、施妤柔★.
电工电子技术实验 电工电子教学部.
數位邏輯設計 VHDL.
第四章 QuartusII软件的应用 本章重点: 本章难点: EDA技术 QuartusII的设计输入 QuartusII软件的综合与编译
使用VHDL設計-XOR_GATE 通訊一甲 B 楊穎穆.
使用VHDL設計-8x1多工器 通訊一甲 B 楊穎穆.
自停式向下計數器 通訊一甲 B 楊穎穆.
Japanese Architecture
服務教育課程 改制說明會 學生事務處 服務教育組
第7章 VHDL设计应用实例 7.1 8位加法器的设计 7.2 分频电路 7.3 数字秒表的设计.
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
可變式計數器 通訊一甲 B 楊穎穆.
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2009年10月22日
Programmable Logic System Design
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
第七章 基本逻辑电路设计.
Programmable Logic System Design
第六章 直接成本法.
Presentation transcript:

第12章 图像边缘检测器的设计与分析 12.1 系统设计要求 12.2 系统设计方案 12.3 主要LPM原理图和VHDL源程序 第12章 图像边缘检测器的设计与分析 12.1 系统设计要求 12.2 系统设计方案 12.3 主要LPM原理图和VHDL源程序 12.4 系统仿真/硬件验证 12.5 设计技巧分析 12.6 系统扩展思路

12.1 系统设计要求 在嵌入式图形系统处理领域,图像处理的速度问题一直是一个很难突破的设计瓶颈。一般情况下,控制领域及数据处理领域几乎是单片机和数字信号处理器的天下,但是在数据处理量大,实时性要求更为苛刻的场合,传统的MCU根本无法适应实时大批量数据处理场合,而DSP虽然具备指令流水线和很高的处理速度,但是由于其本质仍然是依靠串行执行指令来完成相应的图像处理算法的,所以其处理速度依然很受限制。

图12.1是一个DSP+FPGA/CPLD的图像处理系统的总体框图,其中图像传感器CCD的主要功能是获取外界图像的各个像素点灰度值;图像主处理器采用数字信号处理器DSP,主要负责对图像传感器传送的灰度信息进行存储,并负责调用协处理器进行边界像素判别,找出我们感兴趣的目标对象,从而得到该对象的运动信息,以便控制执行装置进行位置跟踪;边缘检测协处理器为FPGA/CPLD,主要完成主处理器传送过来的像素的边界判别,并把处理结果返回到主处理器中。

图12.1 DSP+FPGA/CPLD图像处理系统的组成框图

在本系统中,系统的设计指标为:数据吞吐量>10 Mb/s;动态响应时间<100 ms/frame。主处理器初步选用德州公司的DSP芯片TMS320C5402,协处理器拟采用ALTERA公司的FLEX10K20。图像处理系统的接口关系如图12.2所示,其中FLEX10K20的接口说明如下: DATA:8位数据输入端口。 WR:写有效信号输入端口。 CLK:同步时钟输入端口。

T_D:阈值/像素值选择端口,T_D =1时,表示输入的数据为像素阈值,为0时表示输入的数据为像素值。 CS:片选信号,低电平有效。 READY:状态查询位,为协处理器“准备好”信号输出端,低电平有效,当该协处理器处理完一帧图像后,该信号恢复有效电平,主处理器启动下一帧图像的边界处理。 MAGOUT:像素边界判别信号输出,MAGOUT为1时,表示当前像素为边界像素,为0表示为非边界像素。

图12.2 图像处理系统接口关系图

12.2 系统设计方案 12.2.1 算法选择 图像处理经常用于在连续图像中跟踪移动物体。它从传感器接收图像的连续流,根据输入图像的数据选择跟踪物体。初始图像不断被加强,然后进行分割,以定位物体或找出感兴趣的区域。定位物体或区域后,检查出可以最终划分物体的特征。

Sobel算法包括带4个3×3掩码的输入图像数据,即Sobel算子,它设置权重来检测水平、垂直、左对角、右对角各个不同方向上密度幅度的不同。这个过程通常被称为过滤。下面我们来看一个3×3的像素窗口,如图12.3所示。

图12.3 像素窗

水平、垂直、左对角、右对角各图像方向上密度幅度的变化可以用如下算子进行计算: H=(Q0+2Q3+Q6) ? (Q2+2Q5+Q8) V=(Q0+2Q1+Q2) ? (Q6+2Q7+Q8) DR=(Q1+2Q0+Q3) ? (Q5+2Q8+Q7) DL=(Q1+2Q2+Q5) ? (Q3+2Q6+Q7) H、V、DL、DR这四个参数用于计算梯度大小和方向。 对梯度大小的一个普遍估计值为: Magnitude=Max(H, V, DR, DL)

12.2.2 算法实现   由前面所述可知,Sobel的滤波函数为   H=(Q0+2Q3+Q6) ? (Q2+2Q5+Q8); V=(Q0+2Q1+Q2) ? (Q6+2Q7+Q8) DR=(Q1+2Q0+Q3) ? (Q5+2Q8+Q7); DL=(Q1+2Q2+Q5) ? (Q3+2Q6+Q7) Magnitude=Max(H, V, DR, DL)

为了减少设计的复杂度,上面式子中的乘法运算可以改写成加法运算:   H=(Q0+Q3+Q3+Q6) ? (Q2+Q5+Q5+Q8); V=(Q0+Q1+Q1+Q2) ? (Q6+Q7+Q7+Q8) DR=(Q1+Q0+Q0+Q3)?(Q5+Q8+Q8+Q7); DL=(Q1+Q2+Q2+Q5)? (Q3+Q6+Q6+Q7)

12.2.3 总体设计方案   根据图像处理的知识及分析,我们可得到此边缘检测处理器的工作流程如图12.4所示。首先,DSP将从图像传感器中获取的灰度图(800×600)按照每三列划分为一帧的原则进行帧窗口划分。帧窗口的图形数据又按照每三行划分为一个像素处理窗口的原则逐一进行处理。

图12.4 图像处理流程示意图

根据以上设计思路,我们可把整个系统的实现划分为四个大的模块,其总体结构如图12.5所示。其中: 帧窗口接收模块(FIFO)负责接收DSP传送过来的一个帧窗口的数据,其本质为一个双端口先入先出栈FIFO,其数据宽度为8,深度等于一个帧窗口内的像素点个数(600×3=1800)。

串入并出模块(SIPO)负责把FIFO内的数据转换成为像素处理窗口的列像素向量,便于像素处理窗口的数据刷新处理。 像素窗口刷新模块(REFRESH)实现对需要处理的像素数据的刷新。 数据处理模块(PROCESSOR)是本图形边缘处理器的核心部分,主要是实现Sobel算法,其性能的好坏对整个设计的成败有着关键的作用。

图12.5 图像边缘检测器总体结构图

12.2.4 主要功能模块的设计 1. 帧窗口接收模块FIFO 由于高速设备与慢速设备之间处理速度的差别,它们之间的数据传输一般采用查询方式或中断方式,而数据同步传输则选择了帧同步方式。存储器的类型拟选用FIFO,堆栈空时向主机发出准备好信号,主机检测到它的数据传输请求时,传送一帧数据,由于FIFO的大小与一帧图像的大小是一致的,所以接收完毕后,堆栈满,Sobel处理器启动边缘检测进程,处理完一帧数据后,堆栈重新变为空,为下一帧数据处理作准备。其内部结构如图12.6所示。

图12.6 帧窗口接收模块FIFO的内部结构图

2.串入并出模块SIPO 串入并出模块的主要功能是负责一列像素的刷新,也就是把主处理器传送过来的像素值转换成3×3像素窗口的一列。该模块的实现主要是通过六个D触发器和一个三进制的计数器组成,当计数器产生进位溢出时,串行输入的三个像素点并行输出。其内部结构如图12.7所示。

图12.7 串入并出模块SIPO的内部结构图

3.像素窗口刷新模块REFRESH 像素刷新窗口的主要功能是接收串入并出模块的3个并行像素,把窗口中原有的第二列像素推入第三列,第一列推入第二列,新到的并行像素填入第一列。其本质为一个移位寄存器。其内部结构如图12.8所示。

图12.8 像素刷新模块REFRESH的内部结构图

4.滤波模块FILTER 对于Sobel算法的各个滤波器,H、V、DR、DL经变换后可得到: H=(Q0+Q3+Q3+Q6) ? (Q2+Q5+Q5+Q8); V=(Q0+Q1+Q1+Q2) ? (Q6+Q7+Q7+Q8) DR=(Q1+Q0+Q0+Q3)?(Q5+Q8+Q8+Q7); DL=(Q1+Q2+Q2+Q5)? (Q3+Q6+Q6+Q7) 因此我们对于滤波模块FILTER的设计可采用两级并行流水方案,其内部结构如图12.9所示。

图12.9 滤波模块FILTER的内部结构图

对于上述滤波数据的处理,在不采用流水线的情况下,像素从进入处理器到结果输出,需要经过两级加法和一级减法的时延,但是使用流水线技术后(其本质为对中间结果进行寄存),结果输出仅仅滞后三个时钟频率,但是增加了数据吞吐量,同时也提高了时钟频率。为提高加法运算的速度,本设计中的加法器采用超前进位加法器。下面对其作一个简单的回顾: SUM(I)=A(I) XOR B(I) XOR C(I?1) C(I)=(A(I) AND B(I) ) OR (A(I) XOR B(I) AND C(I?1) 令 P(I)=A(I) XOR B(I); G(I)= A(I) AND B(I)

其中P(I)、G(I)均与进位信号无关,则SUM(I)与C(I)可表达为 SUM(I)=P(I) XOR C(I?1); C(I)=G(I) OR (P(I) AND C(I-1))

5. 数据处理模块PROCESSOR 数据处理模块PROCESSOR的主要功能是求出四个方向的图像梯度数据绝对值的最大值,同时判别最大值出现的方向。其内部结构如图12.10所示, 它包括滤波器FILTER、比较器COMPARE、边界判断器RESULT和寄存器等。

图12.10 数据处理模块PROCESSOR的内部结构图

12.3 主要LPM原理图和VHDL源程序 12.3.1 LPM兆功能块定制方法简介 LPM模块的使用方式有两种:原理图调用方式和VHDL文本调用方式。下面以一个先进先出的存储缓冲器MYFIFO的设计为例介绍一下LPM兆功能块的定制方法。

1.原理图调用方式 先进入原理图编辑窗,再调入需使用的兆功能块(LPM_FIFO)(如图12.11所示),鼠标双击调出的兆功能块右上角的参数显示文字,然后在弹出的端口/参数编辑窗中,设定(Used)本设计要用的端口,去掉(Unused)本设计不用的端口,并对于一些需设定参数的端口,选择合适的参数(如图12.12所示)。这时基于兆功能块MYFIFO就已经定制好(如图12.13所示),在后面的设计中即可作为一个元件进行调用。

图12.11 调用兆功能块示意图

图12.12 兆功能块端口/参数设定示意图

图12.13 定制好的兆功能块示意图

2.VHDL文本调用方式 首先进入MAX+plus Ⅱ兆功能块定制管理器(如图12.14所示),并选择生成或修改一个定制的兆功能块(如图12.15所示);其次选择定制的功能块名称LPM_FIFO,输出文件的格式VHDL,输出文件的路径及文件名等(如图12.16所示);接着进行数据参数选择(如图12.17所示)、端口设置选择(如图12.18所示)、数据输出控制选择(如图12.19所示)、优化方式选择(如图12.20所示)等;最后单击“Finish”即完成了MYFIFO.VHD的定制(如图12.21所示)。

图12.14 进入兆功能块定制管理器

图12.15 生成或修改一个定制的兆功能块

图12.16 定制的功能块的路径及输出文件选择

图12.17 数据参数选择

图12.18 端口设置选择

图12.19 数据输出控制选择

图12.20 优化方式选择

图12.21 单击“Finish”后完成MYFIFO.VHD的定制

MYFIFO.VHD的源程序如下: --MYFIFO.VHD (本程序已去掉程序前后的说明注释) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MYFIFO IS PORT (DATA:IN STD_LOGIC_VECTOR (7 DOWNTO 0); WRREQ:IN STD_LOGIC ; RDREQ:IN STD_LOGIC ; CLOCK:IN STD_LOGIC ; Q:OUT STD_LOGIC_VECTOR (7 DOWNTO 0); FULL:OUT STD_LOGIC ; EMPTY:OUT STD_LOGIC );

END MYFIFO; ARCHITECTURE SYN OF MYFIFO IS SIGNAL SUB_WIRE0:STD_LOGIC ; SIGNAL SUB_WIRE1:STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL SUB_WIRE2:STD_LOGIC ; COMPONENT LPM_FIFO GENERIC (LPM_WIDTH:NATURAL; LPM_NUMWORD:NATURAL; LPM_WIDTHU:NATURAL; LPM_SHOWAHEAD:STRING; LPM_HINT:STRING); PORT (RDREQ:IN STD_LOGIC;

EMPTY:OUT STD_LOGIC; CLOCK:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR (7 DOWNTO 0); WRREQ:IN STD_LOGIC; DATA:IN STD_LOGIC_VECTOR (7 DOWNTO 0); FULL:OUT STD_LOGIC); END COMPONENT; BEGIN EMPTY <= SUB_WIRE0; Q <= SUB_WIRE1(7 DOWNTO 0); FULL <= SUB_WIRE2; LPM_FIFO_COMPONENT:LPM_FIFO

GENERIC MAP (LPM_WIDTH => 8, LPM_NUMWORDS => 4, LPM_WIDTHU => 2, LPM_SHOWAHEAD => "OFF", LPM_HINT => "USE_EAB=ON, MAXIMIZE_SPEED=5") PORT MAP (RDREQ => RDREQ, CLOCK => CLOCK, WRREQ => WRREQ, DATA => DATA, EMPTY => SUB_WIRE0, Q => SUB_WIRE1, FULL => SUB_WIRE2); END ARCHITECTURE SYN;

12.3.2 一些模块的LPM原理图 FIFO模块由定制的LPM模块CSFIFO、LPM_FF,标准元件AND2、NOT以及用VHDL编程编译后生成的二进制计数器COUNTER2构成,如图12.22所示。 SIPO的LPM原理图如图12.23所示。REFRESH的LPM原理图如图12.24所示。 FILTER的LPM原理图如图12.25(略)所示。PROCESSOR的LPM原理图如图12.26 (略)所示。

图12.22 FIFO的原理图

图12.23 SIPO的原理图

图12.24 REFRESH的原理图

12.3.3 RESULT的VHDL源程序 边界判断器RESULT模块是数据处理模块PROCESSOR内部的一个子模块,其功能就是根据区分度阈值、四个滤波器的输出及其最大值进行边界的判断。其输入、输出端口如图12.27所示。

图12.27 RESULT模块的输入、输出端口图

VHDL源程序如下。 --RESULT.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY RESULT IS GENERIC(SIZE:INTEGER:=11); PORT(CLK:IN STD_LOGIC; H, V, DR, DL:IN STD_LOGIC_VECTOR(SIZE DOWNTO 1); THRESHOLD:IN STD_LOGIC_VECTOR(8 DOWNTO 1); MAX:IN STD_LOGIC_VECTOR(SIZE DOWNTO 1);

MAGOUT:OUT STD_LOGIC; DIR:OUT STD_LOGIC_VECTOR(3 DOWNTO 1)); END ENTITY RESULT; ARCHITECTURE ART OF RESULT IS BEGIN PROCESS(CLK, THRESHOLD) IF(CLK'EVENT AND CLK='1') THEN IF(MAX(SIZE-1 DOWNTO 1)>"00"&THRESHOLD) THEN MAGOUT<='1'; IF(MAX=H AND H(SIZE)='0') THEN DIR<="000";

ELSIF(MAX=H AND H(SIZE)='1') THEN DIR<="100"; ELSIF(MAX=V AND V(SIZE)='0') THEN DIR<="010"; ELSIF(MAX=V AND V(SIZE)='1') THEN DIR<="110"; ELSIF(MAX=DR AND DR(SIZE)='0') THEN DIR<="001"; ELSIF(MAX=DR AND DR(SIZE)='1') THEN DIR<="101"; ELSIF(MAX=DL AND DL(SIZE)='0') THEN DIR<="011"; ELSIF(MAX=DL AND DL(SIZE)='1') THEN DIR<="111"; END IF; ELSE MAGOUT<='0';DIR<="000"; END PROCESS; END ARCHITECTURE ART;

12.3.4 COMPARE的VHDL源程序   比较器COMPARE模块是数据处理模块PROCESSOR内部的一个子模块,其功能就是根据两个输入参数求出其最大值。其输入、输出端口如图12.28所示。

图12.28 COMPARE的输入、输出端口如图

VHDL源程序如下。 --COMPARE.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COMPARE IS GENERIC(SIZE:INTEGER:=11); PORT(DAT1, DAT2: IN STD_LOGIC_VECTOR(SIZE DOWNTO 1); MAX: OUT STD_LOGIC_VECTOR(SIZE DOWNTO 1)); END ENTITY COMPARE; ARCHITECTURE ART OF COMPARE IS

BEGIN PROCESS(DAT1, DAT2) IF( DAT1(SIZE-1 DOWNTO 1) > DAT2(SIZE-1 DOWNTO 1) ) THEN MAX<=DAT1; ELSE MAX<=DAT2; END IF; END PROCESS; END ARCHITECTURE ART;

12.3.5 系统的总体组装设计   请读者根据图12.5的总体结构图自行完成。

12.4 系统仿真/硬件验证 12.4.1 系统的有关仿真 1.FIFO的仿真 12.4 系统仿真/硬件验证 12.4.1 系统的有关仿真 1.FIFO的仿真 (1) 仿真激励源:同步时钟CLK,写使能WE,八位数据输入端口DATA; (2) 仿真期望结果:当主处理器向FIFO写完一帧像素点数据后,READY信号输出值为零,同时,FIFO封锁输入通道,外部数据不能再写入FIFO。

(3) 仿真结果及分析:FIFO的仿真结果如图12. 29所示。从图中可以看出,主处理器写完四个像素点数据后,Q[8

图12.29 FIFO的仿真结果

2.SIPO的仿真 (1) 激励源:同步时钟及外部输入像素的灰度信息。 (2) 期望结果:把串行数据转换为并行数据,而且输出的并行数据必须保持到第三个串行数据输入的时刻以前。 (3) 仿真结果及分析:SIPO的仿真结果如图12.30所示。由图中可以看出,如我们将串行数据每三个划分为一段,QA、QB、QC恰好是这一段的并行输出,符合设计期望。

图12.30 SIPO的仿真结果

3.REFRESH的仿真 REFRESH模块在系统中的主要作用是实现像素处理窗口的更新。在每一时钟上升沿,并行提供三个输入像素。 (1) 激励源:外部时钟CLK及并行像素DATA0、DATA1、DATA2。 (2) 期望结果:在每个时钟上升沿到来时,像素窗口最左端的一列像素(Q0, Q1, Q2)移出,第二列(Q3, Q4, Q5)移入第一列(Q0, Q1, Q2),第三列(Q6, Q7, Q8)移入第二列(Q3, Q4, Q5),输入像素直接移入第三列(Q6, Q7, Q8),同时,该窗口必须能并行输出8个像素给Sobel滤波模块。

(3) 仿真结果:REFRESH模块的仿真结果如图12

图12.31 REFRESH的仿真结果

4.FILTER的仿真 滤波器的本质是实现并行流水加法操作。在调试过程中,为了观察到实际的延时,输出信号直接来自流水加法器的输出,而非流水寄存器输出。所以存在部分毛刺。 (1) 激励源:同步时钟(CLK)及并行像素输入(QA, QB, QC, QD, QE, QF)。 (2) 期望结果:输出的数据之间满足Sobel滤波关系式。 (3) 仿真结果及分析:图12.32是它的仿真波形,由图中可以看出:

DATA[19..11]=QA+QB;DATA[29..21]=QB+QC DATA[39..31]=QD+QE;DATA[49..41]=QE+QF DATB1[10..1]=DATA[19..11]+DATA[29..21] DATB2[10..1]=DATA[39..11]+DATA[49..41] RESULT=DATB1[10..1]-DATB2[10..1]

图12.32 FILTER的仿真结果

5. RESULT及COMPARE的仿真 RESULT的仿真结果如图12.33所示;COMPARE的仿真结果如图12.34所示。

图12.33 RESULT的仿真结果

图12.34 COMPARE的仿真结果

6.PROCESSOR的仿真 图12.35是PROCESSOR的仿真图,我们先计算图中四个方向滤波器的绝对值大小: H_FILTER=422; V_FILTER=1950?1024=926 DR_FILTER=242; DL_FILTER=478 四者中的绝对值最大值是926,故最大的为V_filter。观察箭头所指的部分,正好为V_filter的值1950。经过验证,上述图中的所有输出满足输出期望。

图12.35 PROCESSOR的仿真结果

12.4.2 系统的硬件验证 请读者根据自己所拥有的EDA实验开发系统自行完成。

12.5 设计技巧分析 (1) 本设计对于一些图像处理硬件的设计有较好的参考价值,特别是对并行流水技术、数据刷新技术分析得比较细致。 12.5 设计技巧分析 (1) 本设计对于一些图像处理硬件的设计有较好的参考价值,特别是对并行流水技术、数据刷新技术分析得比较细致。 (2) 几乎所有的CPLD/FPGA供应商提供的软件开发工具中都会提供许多已经设计好的单元电路库,特别是ALTERA的开发软件提供的LPM_MEGAFUNCTION参数化设计库。

12.6 系统扩展思路 该系统设计好后,可与DSP主处理器及其他相关设备进行联合调试,并测试有关结果。