CN105741237B - 一种基于fpga图像翻转的硬件实现方法 - Google Patents
一种基于fpga图像翻转的硬件实现方法 Download PDFInfo
- Publication number
- CN105741237B CN105741237B CN201610052690.4A CN201610052690A CN105741237B CN 105741237 B CN105741237 B CN 105741237B CN 201610052690 A CN201610052690 A CN 201610052690A CN 105741237 B CN105741237 B CN 105741237B
- Authority
- CN
- China
- Prior art keywords
- data
- ddr
- fifo
- read
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 11
- 230000005540 biological transmission Effects 0.000 claims abstract description 9
- 230000015654 memory Effects 0.000 claims description 50
- 230000007246 mechanism Effects 0.000 claims description 3
- 238000005457 optimization Methods 0.000 claims description 3
- 238000011112 process operation Methods 0.000 claims description 3
- 238000003491 array Methods 0.000 abstract description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 abstract description 3
- 238000013461 design Methods 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 241000218691 Cupressaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
- G06T3/606—Rotation of whole images or parts thereof by memory addressing or mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种基于FPGA图像翻转的硬件实现方法,将视频数据存放在DDR中,DDR工作在猝发模式,设计对应的DDR控制器以及FIFO的读写控制器。将DDR中数据划分成小块分别读入FIFO数组中,通过FIFO数组的数据重新拼接读写来实现每个小块图像的流水翻转,同时为了提高效率,采用了两组FIFO数组实现乒乓算法,一组FIFO在写数据实现翻转时,另一组FIFO读取DDR中图像数据。本发明利用FPGA并行数据处理的特点,直接对存放在SDRAM中的图像像素通过SDRAM控制器实现图像翻转,达到大数据的缓存和高速的要求,简化算法,提高效率。本发明在Xilinx的Virtex‑7XC7V585T平台上得到验证,整个模块可工作在285Mhz的时钟下,满足高清图像数据的传输要求。
Description
技术领域
本发明公开了一种基于FPGA图像翻转的硬件实现方法,适用于高分辨率视频图像翻转处理,涉及图像处理技术领域。
背景技术
随着人们对视频图像的清晰度和细节显示要求的不断提高,高分辨率、高bit位的视频标准相继被推出,造成了数据处理量极大的增加,要求数据处理速度极大提高,意味着对数据缓存的容量和控制提出较高的要求。在常用的存储器中,SDRAM具有大容量和高速度的特点,并且价格也比较便宜,在视频图像处理中被广泛的用于图像缓存。但由于SDRAM的操作方式较复杂,常见的控制器支持的视频分辨率普遍都不高。在高分辨率的视频图像已经普及的今天,支持高分辨率的SDRAM控制器的设计也已经被越来越多的视频图像处理人士关注。
发明内容
本发明所要解决的技术问题是:针对现有技术的缺陷,提供一种基于FPGA图像翻转的硬件实现方法,针对高分辨率视频图像的翻转,将图像数据采集在DDR中,将DDR划分成小块分别读入FIFO数组中,通过FIFO数组的读写来实现图像的翻转,实现FPGA流水,提高速率,同时为了更好的节省时间提高效率,采用了两组FIFO数组实现乒乓算法。
本发明为解决上述技术问题采用以下技术方案:
一种基于FPGA图像翻转的硬件实现方法,具体的硬件结构包括DDR硬件、DDR控制器、FIFO读控制器、FIFO写控制器以及复数个FIFO存储器,所述DDR硬件与DDR控制器相连接,DDR控制器还分别与FIFO读控制器、FIFO写控制器相连接,FIFO读控制器、FIFO写控制器分别与对应的FIFO存储器相连接;
所述DDR控制器包括用户接口部分、逻辑控制部分以及物理层,其中,所述用户接口部分实现读写数据的缓存、调整数据格式为传输数据所需要的格式、将用户地址转换为DDR的bank、row和column形式;
所述逻辑控制部分包括bank、row和column配置机制以及仲裁单元,实现系统吞吐量和延时的优化;
所述物理层提供物理接口到DDR硬件,包含时钟、地址和控制生成逻辑,读写数据路径以及上电后DDR控制器的初始化。
作为本发明的进一步优选方案,所述DDR控制器的数据传输采用突发模式,从用户端发送控制字符;
当向FIFO存储器写数据时,发送完控制字符后,从用户写端口向FIFO存储器发送数据;
当由FIFO存储器读数据时,从用户读端口由FIFO存储器中读取数据。
作为本发明的进一步优选方案,所述FIFO读控制器的状态机分为三个状态:初始化、DDR工作以及读数据状态;
在初始化状态中,当DDR硬件初始化结束后DDR进入工作状态开始接收读写命令,向DDR控制器写入读命令,读取数据存放到相应的FIFO存储器中,读取完毕进入DDR工作状态。
作为本发明的进一步优选方案,所述DDR硬件为SDRAM,具体型号为CY7C1543KV18。
作为本发明的进一步优选方案,所述DDR控制器为FPGA,具体型号为Virtex-7XC7V585T。
作为本发明的进一步优选方案,将需要进行图像翻转的图像像素数据存储在FIFO存储器中,所述FIFO存储器的数量为64个,平均的分成两组;
将所述图像划分为小块,读取被划分的小块的数据,小块中每一行数据写入每一个FIFO存储器中,将第一组的FIFO存储器写满后,读取其中每个FIFO存储器的第一个数据,每4个拼接成一个burst数据,写入DDR该小块的第一行中,写完8次后就将原来小块的第一列翻转成了新的小块的第一行;依次将FIFO存储器剩余的31个数据拼接写入相应的地址,完成小模块的翻转;
当第一组的32个FIFO存储器在写数据时,将下一个小模块的原始数据读出到第二组FIFO存储器中,两组FIFO存储器交替读写,实现乒乓并行流水操作。
作为本发明的进一步优选方案,所述图像像素为1024*768,每个像素点为32位,翻转之后实现图像像素变为768*1024,像素点保持32位,所述像素存储空间扩展为1024*1024,扩展出来的空间填写数据为0;
采用突发模式读写,突发长度为4,划分后的每个小块横向包含1024/(4*4*2)=32个数据,纵向768个像素点每个小包包含32个数据,768/32=4*6分成6份,剩余2份用扩展的数据补齐。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:本发明利用FPGA并行数据处理的特点,直接对存放在SDRAM中的图像像素通过SDRAM控制器实现图像翻转,达到大数据的缓存和高速的要求,简化算法,提高效率。
附图说明
图1是DDR控制器结构的结构示意图。
图2是DDR像素数据分块示意图。
图3是图像翻转结构框图。
图4是图像翻转数据读写示意图。
图5是读控制模块状态机示意图。
图6是布局布线后时序报告。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
下面结合附图对本发明的技术方案做进一步的详细说明:
本发明所公开的基于FPGA图像翻转的硬件实现方法,针对高分辨率视频图像的翻转,将图像数据采集在DDR中,将DDR划分成小块分别读入FIFO数组中,通过FIFO数组的读写来实现图像的翻转,实现FPGA流水,提高速率,同时为了更好的节省时间提高效率,采用了两组FIFO数组实现乒乓算法。
下面以一个具体实施例,详细介绍本发明的技术方案。在具体实施例中,采用的FPGA为Xilinx公司的Virtex-7XC7V585T,SDRAM采用Cypress公司的CY7C1543KV18芯片,物理上两片位宽为18bit的SRAM以地址共享、数据扩展的方式接入Virtex-7FPGA。
如图1所示为DDR控制器结构,分为三个组成部分:用户接口部分、逻辑控制部分以及物理层。用户接口部分实现读写数据的缓存、调整数据格式为传输数据所需要的格式、将用户地址转换为DDR的bank、row和column形式;逻辑控制部分包括bank、row和column配置机制以及仲裁单元,实现系统吞吐量和延时的优化;物理层提供物理接口到外部DDR3SDRAM,包含时钟、地址和控制生成逻辑,读写数据路径以及上电后SDRAM的初始化。
整个DDR3控制器的数据传输采用突发模式,设定数据突发长度(Burst Lenth)为4,从用户端发送控制字符,包括地址以及读/写命令,如果向存储器写数据,发送完控制字符后,从用户写端口向存储器发送数据;如果是读数据,从用户读端口从存储器中读取数据。
在上述具体实施例中,图像像素为1024*768,每个像素点为32位,翻转之后实现图像像素变为768*1024,像素点还是保持不变32位,但是屏幕显示为1024*768,所以旋转之后存储的数据还是要满足横向1024,纵向至少768。采集到的像素数据存储在DDR中,为了满足图像翻转之后仍能满足屏幕分辨率,DDR的像素存储空间扩展为1024*1024,扩展出来的空间填写数据为0。DDR采用突发模式读写,突发长度为4,数据位宽为32位,为了并行快速实现图像翻转,将图像划分为小块,如图2所示,横向为1024个像素点,DDR突发长度为4,同时为了提高效率,节省FPGA空间和等待时间采用了乒乓操作,分为8份,所以每个小块横向包含1024/(4*4*2)=32个数据,纵向768个像素点每个小包包含32个数据,768/32=4*6可以分成6份,剩余2份用扩展的数据补齐。
整个图像翻转的结构中,包括DDR硬件、DDR控制器、FIFO读写控制器以及多个FIFO存储器。每个FIFO存储器位宽为32,深度为32,大于等于每个小块一行的数据个数,总共有32*2个这样的FIFO,32个FIFO存储器为一组做乒乓操作。
图像翻转的具体实现如图3所示,首先读取DDR中被划分的小块的数据,小块中每一行数据写入每一个FIFO存储器中,将第一组的32个FIFO存储器写满后,读取每个FIFO存储器的第一个数据(即写入FIFO存储器的第一个数据),每4个拼接成一个DDR写的burst数据,写入DDR该小块的第一行中,写完8次后就将原来小块的第一列翻转成了新的小块的第一行;依次将FIFO存储器剩余的31个数据拼接写入DDR中相应的地址就能完成小模块的翻转。当第一组的32个FIFO存储器在向DDR中写数据时,此时将下一个小模块的原始数据读出到第二组FIFO存储器中,两组FIFO存储器交替读写,实现乒乓并行流水操作,提高速率。
如图4所示为联结在DDR控制器以及FIFO之间的FIFO读控制器的状态机,分为三个状态:初始化、DDR工作以及读数据状态。在初始化状态中只有当DDR硬件初始化结束后DDR进入工作状态开始接收读写命令,向DDR控制器写入整个小块数据的读命令,读模块的读命令发送结束后开始读取数据存放到相应的FIFO中,读取完毕进入DDR工作状态(即发送读命令字状态),如此循环。
从仿真图中可以看到与图5的状态机一致,首先发送读命令字,发送接收后直接读取DDR数据到FIFO存储器中,然后发送读命令和读数据循环进行。写控制模块首先发送写命令,然后将不同FIFO存储器的相同地址的数据拼接成burst型数据后写入DDR中,DDR控制器边发送写控制字,边写数据同步进行。
图6所示是在Virtex-7 XC7V585T开发板中布局布线后的时序报告,从报告中可以看到最高时钟频率可达到285MHz,满足高清图像数据的传输要求,由此可以验证本发明的实际使用效果。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质,在本发明的精神和原则之内,对以上实施例所作的任何简单的修改、等同替换与改进等,均仍属于本发明技术方案的保护范围之内。
Claims (3)
1.一种基于FPGA图像翻转的硬件实现方法,其特征在于:具体的硬件结构包括DDR硬件、DDR控制器、FIFO读控制器、FIFO写控制器以及复数个FIFO存储器,所述DDR硬件与DDR控制器相连接,DDR控制器还分别与FIFO读控制器、FIFO写控制器相连接,FIFO读控制器、FIFO写控制器分别与对应的FIFO存储器相连接;所述DDR控制器包括用户接口部分、逻辑控制部分以及物理层,其中,所述用户接口部分实现读写数据的缓存、调整数据格式为传输数据所需要的格式、将用户地址转换为DDR的bank、row和column形式;所述逻辑控制部分包括bank、row和column配置机制以及仲裁单元,实现系统吞吐量和延时的优化;所述物理层提供物理接口到DDR硬件,包含时钟、地址和控制生成逻辑,读写数据路径以及上电后DDR控制器的初始化;所述DDR控制器的数据传输采用突发模式,从用户端发送控制字符;当向FIFO存储器写数据时,发送完控制字符后,从用户写端口向FIFO存储器发送数据;当由FIFO存储器读数据时,从用户读端口由FIFO存储器中读取数据,初始化、DDR工作以及读数据状态;在初始化状态中,当DDR硬件初始化结束后DDR进入工作状态开始接收读写命令,向DDR控制器写入读命令,读取数据存放到相应的FIFO存储器中,读取完毕进入DDR工作状态;将需要进行图像翻转的图像像素数据存储在FIFO存储器中,所述FIFO存储器的数量为64个,平均的分成两组:将所述图像划分为小块,读取被划分的小块的数据,小块中每一行数据写入每一个FIFO存储器中,将第一组的FIFO存储器写满后,读取其中每个FIFO存储器的第一个数据,每4个拼接成一个burst数据,写入DDR该小块的第一行中,写完8次后就将原来小块的第一列翻转成了新的小块的第一行;依次将FIFO存储器剩余的31个数据拼接写入相应的地址,完成小模块的翻转;当第一组的32个FIFO存储器在写数据时,将下一个小模块的原始数据读出到第二组FIFO存储器中,两组FIFO存储器交替读写,实现乒乓并行流水操作;所述图像像素为1024*768,每个像素点为32位,翻转之后实现图像像素变为768*1024,像素点保持32位,所述像素存储空间扩展为1024*1024,扩展出来的空间填写数据为0;采用突发模式读写,突发长度为4,划分后的每个小块横向包含1024/(4*4*2)=32个数据,纵向768个像素点每个小包包含32个数据,
768/32=4*6分成6份,剩余2份用扩展的数据补齐。
2.如权利要求1所述的一种基于FPGA图像翻转的硬件实现方法,其特征在于:所述DDR硬件为SDRAM,具体型号为CY7C1543KV18。
3.如权利要求1所述的一种基于FPGA图像翻转的硬件实现方法,其特征在于:所述DDR控制器为FPGA,具体型号为Virtex-7XC7V585T。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610052690.4A CN105741237B (zh) | 2016-01-26 | 2016-01-26 | 一种基于fpga图像翻转的硬件实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610052690.4A CN105741237B (zh) | 2016-01-26 | 2016-01-26 | 一种基于fpga图像翻转的硬件实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105741237A CN105741237A (zh) | 2016-07-06 |
CN105741237B true CN105741237B (zh) | 2019-03-26 |
Family
ID=56247613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610052690.4A Active CN105741237B (zh) | 2016-01-26 | 2016-01-26 | 一种基于fpga图像翻转的硬件实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105741237B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106154553B (zh) * | 2016-08-01 | 2024-06-28 | 全球能源互联网研究院 | 一种电力巡检智能头盔双目显示系统及其实现方法 |
CN106530209A (zh) * | 2016-09-26 | 2017-03-22 | 深圳市振华微电子有限公司 | 一种基于fpga的图像旋转方法及装置 |
CN107133407B (zh) * | 2017-05-11 | 2020-07-10 | 成都欧飞凌通讯技术有限公司 | 一种高带宽下提高ddr ram接口带宽的fpga实现方法 |
CN108230222A (zh) * | 2017-12-06 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种OpenGL显示列表调用电路 |
CN107958438A (zh) * | 2017-12-06 | 2018-04-24 | 中国航空工业集团公司西安航空计算技术研究所 | 一种OpenGL新建显示列表电路 |
CN109992234B (zh) | 2017-12-29 | 2020-11-17 | 浙江宇视科技有限公司 | 图像数据读取方法、装置、电子设备及可读存储介质 |
CN108460729A (zh) * | 2018-01-17 | 2018-08-28 | 东莞市爱协生智能科技有限公司 | 一种计算机可读存储介质和应用该介质的图像翻转装置 |
CN108536615A (zh) * | 2018-04-02 | 2018-09-14 | 郑州云海信息技术有限公司 | 一种乒乓缓存控制器及其设计方法 |
CN109146793B (zh) * | 2018-06-26 | 2023-08-08 | 杭州雄迈集成电路技术股份有限公司 | 一种流水线式图像色度格式转换缩放旋转叠加的系统 |
CN109741774B (zh) * | 2018-11-23 | 2021-07-02 | 成都汇蓉国科微系统技术有限公司 | 一种基于fpga片上ram模拟实现ddr3突发的控制器以及方法 |
CN111209233A (zh) * | 2019-12-27 | 2020-05-29 | 重庆秦嵩科技有限公司 | 一种离散接口发送数据方法 |
CN114281412A (zh) * | 2021-12-24 | 2022-04-05 | 中电信数智科技有限公司 | 一种消息处理方法、装置、电子设备及存储介质 |
CN114584708A (zh) * | 2022-03-03 | 2022-06-03 | 杭州图谱光电科技有限公司 | 一种基于单片fpga的多功能工业相机系统 |
CN118227530B (zh) * | 2024-05-23 | 2024-09-13 | 苏州熠品质量技术服务有限公司 | 一种基于fpga的乒乓存储控制器及其数据处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308697A (zh) * | 2008-07-10 | 2008-11-19 | 哈尔滨工业大学 | 基于sdram的大容量fifo突发缓存器及数据存储方法 |
CN101526924A (zh) * | 2009-04-22 | 2009-09-09 | 东南大学 | 一种优化数字信号处理芯片数据访问的方法 |
CN102521175A (zh) * | 2011-12-20 | 2012-06-27 | 山东大学 | 一种sdram控制器及其工作方法 |
-
2016
- 2016-01-26 CN CN201610052690.4A patent/CN105741237B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308697A (zh) * | 2008-07-10 | 2008-11-19 | 哈尔滨工业大学 | 基于sdram的大容量fifo突发缓存器及数据存储方法 |
CN101526924A (zh) * | 2009-04-22 | 2009-09-09 | 东南大学 | 一种优化数字信号处理芯片数据访问的方法 |
CN102521175A (zh) * | 2011-12-20 | 2012-06-27 | 山东大学 | 一种sdram控制器及其工作方法 |
Non-Patent Citations (1)
Title |
---|
高速图像处理系统中DDR2-SDRAM接口的设计;陈雨 等;《现代电子技术》;20110615;第34卷(第12期);第105-107页 |
Also Published As
Publication number | Publication date |
---|---|
CN105741237A (zh) | 2016-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105741237B (zh) | 一种基于fpga图像翻转的硬件实现方法 | |
CN103377030B (zh) | 图像旋转控制方法及装置 | |
CN101958112B (zh) | 手持设备屏幕画面同时实现90度和270度旋转的方法 | |
CN106201363B (zh) | 视频流像素级数据随机实时访问的存储器及存储方法 | |
CN103794182B (zh) | 显示控制装置和数据处理系统 | |
CN206272746U (zh) | 一种基于fpga的数字视频显示接口模块 | |
CN104717485A (zh) | 一种基于fpga的vga接口裸眼3d显示系统 | |
CN102890427A (zh) | 一种直写式光刻系统的fpga中倾斜数据准备的方法 | |
CN105528758A (zh) | 基于可编程逻辑器件的图像重映射方法及装置 | |
EP0525749B1 (en) | Memory control device | |
CN105654419A (zh) | 一种图像的运算处理系统及运算处理方法 | |
CN100446084C (zh) | 画面数据传送方法、影像数据传送方法以及时序控制模块 | |
US20060119604A1 (en) | Method and apparatus for accelerating the display of horizontal lines | |
CN102497567A (zh) | 一种用于固态真三维体积式显示的体素数据重构方法 | |
CN101980142A (zh) | 一种多屏图像分割处理系统及其方法 | |
TWI449043B (zh) | 高速記憶體系統 | |
US6900812B1 (en) | Logic enhanced memory and method therefore | |
CN108280801A (zh) | 基于双线性插值的重映射方法、装置和可编程逻辑器件 | |
KR100674712B1 (ko) | Ddr을 이용한 데이터의 스캔 시스템 또는 방법 | |
US7483032B1 (en) | Zero frame buffer | |
CN106708457B (zh) | 用于dmd动态选区的fpga处理模块及其方法 | |
CN116166185A (zh) | 缓存方法、图像传输方法、电子设备及存储介质 | |
CN104461967A (zh) | 一种支持同步和异步传输模式的并行数据接口 | |
CN104156907A (zh) | 一种基于fpga的红外预处理存储系统及存储方法 | |
TWI426499B (zh) | 儲存及存取像素資料於圖形顯示裝置之系統及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |