紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

毛华望 提交于 周四, 08/27/2020
紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

大家好:我是毛华望。目前在参加紫光同创PGL22G开发平台试用。连载第6篇。

在第三篇里,不进行modelsim仿真了,而是直接上板在线逻辑分析仪去完成的原因,是因为我使用modelsim的仿真能力有限。通信模块串口已经验证可以了,边缘检测模块也可以了。剩下的内容就是一个存储数据和控制数据了,内容相对来说不难。感觉问题不大。最好的仿真其实是应该在tb.v文件里面写入sobel数据的,然后在读回来,进行整套仿真的。当然凭能力的了。我只会局部仿真一下。

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

程序部分的整体流程。首先串口的数据进来,模块已经写好了。数据缓存就是一个ram存储器。同样的数据缓存2也是一个ram缓存区。  Sobel已经仿真验证过了。目前就剩下控制单元来调度数据和控制指令了。

仿真的时候有看到,3行,计算出一行的结果。所以,用串口调试工具,发3行图像数据,然后让串口回1行结果。最后在拼接起来形成一张整图。

第一部分:程序篇。

前面已经把主要模块的内容都写完了。现在就是要把模块连接起来完成功能。

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

主要模块的内容呢??  4个存储单元。  RAM256X8  

Sobel  计算单元 compute

Rx   tx 

4个存储器中。  1个,存入上一行视频数据。   2个,存入当前行数据。  3个存入下一行数据。    4个,存入输出数据。 就是因为这样的结构,所以,再用串口传送数据的时候,一定要按照要求存入数据才行。必须是前一行, 当前行,下一行。不是直接发送就可以了的。

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

这是框图“数据缓存RAM”,双端口 RAM,用了3个。

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

这里是框图的“sobel计算单元”。连接上。

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

这里就是框图中的,“数据缓存RAM 2

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

这里是框图 “控制单元”。我没有单独写一个模块,直接在顶层写的控制状态机。

我这里用了8个状态机去完成。

分别是写入状态0前一行数据200个, 状态1写入当前行数据200个,状态2写入后一行数据200个。状态3sobel计算。 状态4,读前一行数据, 状态5,读当前行数据。状态6,读后一行数据。 状态7tx返回计算结果。

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

状态0.   写入前一行数据。    写地址增加,    rx来的数据写入存储器。  打开使能。

写入到200的时候。换状态机,写当前行。

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

状态1,内容是一样的。只是写入的是当前行。 地址,数据和使能换到当前行存储器。

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

状态2,差不多一样的。

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

状态3是把sobel计算完的结果,写入到存储器里。

写地址增加,打开写使能。

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

状态4,5,6.  内容是一样的。

读地址加1   打开读使能。 轮着打开不同的存储器。

紫光同创PGL22G开发平台试用连载(6)---边缘检测之综合篇

 

状态机7   tx发送给上位机。

第二部分:matlab篇。

略:

第三部分: modelsim仿真

略:

边缘检测三部曲就这样完成了。再会。

注册送8―88的白菜网址相关的文章

Digi-Key