这里主要问题在于FPGA内部的双口RAM读写操作共用同一数据总线和地址总线,当同时进行读写操作的时候就会产生时序问题导致写入或读出的数据错误。在这两个过程中为了防止数据和地址总线冲突,在FPGA内部设计了一个中央总线仲裁器。根据公共数据传输的先后顺序,中央仲裁器先接受图像传感器的总线请求,当图像存储到RAM之中后,中央仲裁器才响应单片机系统的读信号请求。 这里给出双口RAM的构造及读写控制程序: Entity dual_port_ram is Generic(d_width:integer:=2; Mem_depth:integer:=8); Port(clk:in STD_LOGIC; CS:in STD_LOGIC; We: in STD_LOGIC; Indata: in STD_LOGIC_VECTOR(7 downto 0); Outdata:out STD_LOGIC_VECTOR(7 downto 0); Raddr,waddr:in STD_LOGIC_VECTOR(1 downto 0)); End dual_port_ram ; Architecture data of dual_port_ram is Type mem_type is array(3 downto 0) of STD_LOGIC_VECTOR(7 downto 0); Signal mem:mem_type; Begin Process(clk,we,waddr) Begin If(rising_edge(clk))then If(we=‘1‘)then Mem(conv_integer(waddr))<=indata; End if; End process; Process(raddr,clk) Begin If(rising_edge(clk))then If(CS=‘0‘)then Outdata<=mem(conv_integer(raddr)); End if; End if; End process; End data; 在MAX Plux II中的波形仿真图如图3所示:
五、单片机模块 本系统采用SH4芯片作为处理器:SH4单片机是日立公司推出的一款低功耗、高性能,RISC(精简指令集计算机)结构的全32位单片机。其处理速度可高达60M IPS一100MIPS,能在2.25v电压下工作,功耗仅400MW片内集成有32位乘法器、4路5KB CACHE、存取器管理单元MMU和其它一些通用接口及时钟电路等。日立公司为SH4系列单片机提供了c及c++语言集成编译工具HIM(Hitachi IntegrationManag)。利用它可以将日立C、C++格式的源程序编译链接为汇编程序或目标机器码. 图像传感器芯片OV7620具有灵活的可编程功能,可通过I2C总线对其进行编程来设置各功能寄存器。由于单片机没有内部硬件I2C总线接口,所以只有采用软件模拟的方法实现I2C总线接口功能。取作为SH4的两个I/O引脚作为I2C总线的SCL和SDA总线器件接口,示例程序如下: unsigned char rdiic (unsigned char addr);读取数据 void iic_init();初始化 void iic_start();起始信号 void iic_stop ();结束信号 void delay4u();延时 举例 iic_init(); rstcamera (); wriic (0x11,0x15); delay4ux6(); wriic (0x28,0x60); delay4ux6(); 本模块采用了人类可以识别的ASCII串口通讯协议从而可以通过上位机方便的和人进行交互通信。当连接到一台计算机上,本模块可通过串口上传整幅原始图像数据,用来进行系统调试或更得图像处理。 六、结束语 本文采用大规模集成电路芯片组成了一个简洁,低价的图像采集处理系统。本系统经过编制不同的图像处理算法程序可以应用在足球机器人,农产品检查机器人等不同场合。但其也有些不足,比如SH4处理器,运算速度不够快,只能运行一些相对简单的算法,不支持以太网接口等。下一步工作计划采用双CPU结构,其中DSP专职处理图像数据,ARM负责网络通信,以及对机器人行为的控制等。这样就可将机器人的“眼睛”通过以太网连接成一个复杂的协同处理的视觉系统,以适应更为复杂的场景的需要。