V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
dtysky
V2EX  ›  程序员

大家好,在做一个开源 FPGA 图像库,欢迎探讨 w

  •  
  •   dtysky ·
    dtysky · 2015-06-08 11:33:03 +08:00 · 5765 次点击
    这是一个创建于 3485 天前的主题,其中的信息可能已经有所发展或是发生改变。

    基友说光做出来不行,得多宣传。。。的有人用。。。
    虽然俺是木有啥自信w(虽然刚做出来的时候觉得挺牛逼,不过冷静下来发现缺的还是挺多

    论文
    项目主页
    项目源

    有句话咋说来着
    虽然我们难,但是我们没人用
    虽然我们苦,但是我们不赚钱啊www

    这发这区对么?

    19 条回复    2015-06-10 23:36:06 +08:00
    sneezry
        1
    sneezry  
       2015-06-08 11:38:09 +08:00 via iPhone   ❤️ 1
    Cool!
    deben
        2
    deben  
       2015-06-08 11:41:31 +08:00   ❤️ 1
    A家和X家都有IP可以用吧,虽然是付费IP,但是根据国情,你懂的……

    支持 lz 的开源精神!点赞,点 star!
    caomaocao
        3
    caomaocao  
       2015-06-08 11:49:18 +08:00   ❤️ 1
    哈哈哈~~ 之前做过基础的fpga各种滤波,简单的轮廓提取的~~ 支持下
    dtysky
        4
    dtysky  
    OP
       2015-06-08 12:38:57 +08:00
    @deben
    嗯,不过我的目的本质上是设计一个可以高速开发任何可靠图像IP的平台
    野心有点大吧ww
    mozartgho
        5
    mozartgho  
       2015-06-08 14:04:31 +08:00
    VHDL不懂啊,不过我们这里都是搞硬件的在写FPGA程序。另外你的代码里怎么还有Python,FPGA上也可以跑Python吗?
    dtysky
        6
    dtysky  
    OP
       2015-06-08 14:29:10 +08:00
    @mozartgho

    用verilog写的

    是这样的,我设计了一个开发平台,在这个平台中py的作用是软件仿真、生成功能仿真的数据源和转换功能仿真后的结果,以及可信度分析
    fhliwei
        7
    fhliwei  
       2015-06-08 14:34:54 +08:00 via Android
    @mozartgho 因为用到arm吧。确实现在不是更流行verilog吗?
    dtysky
        8
    dtysky  
    OP
       2015-06-08 14:37:48 +08:00
    @fhliwei

    ZYNQ的ARM上可以跑linux+py,但是这里没用,这里的ARM没跑OS,搭了个AXI模块写了个驱动做测试用的。。。
    verilog适合算法级实现,VHDL适合系统级实现,二者侧重点不一样
    caomaocao
        9
    caomaocao  
       2015-06-08 14:46:04 +08:00
    用了ip软核 相比于 纯fpga速度 慢很多吧?
    dtysky
        10
    dtysky  
    OP
       2015-06-08 14:47:07 +08:00
    @caomaocao

    什么意思?
    我就是纯逻辑做的啊。。。上位机只是用来做配置而已,软硬结合咯
    stgzr
        11
    stgzr  
       2015-06-08 16:02:04 +08:00
    支持一个:)网站打开速度好慢..
    dtysky
        12
    dtysky  
    OP
       2015-06-08 16:12:34 +08:00
    @stgzr

    不是专业搞WEB的,静态网站应该不是什么后端的问题。。。DO的VPS线路问题么。。。
    hanliumaozhi
        13
    hanliumaozhi  
       2015-06-08 16:56:31 +08:00
    我去。。 和我做的一个东西差不多!!!
    dtysky
        14
    dtysky  
    OP
       2015-06-08 17:02:03 +08:00
    @hanliumaozhi

    菊苣做的是w?有工程么?可以探讨探讨
    俺现在觉得这个东西不咋能活的下去。。。
    hanliumaozhi
        15
    hanliumaozhi  
       2015-06-08 22:04:28 +08:00
    @dtysky 玩具撒! 毕业设计做的机器人(轮式)。 然后准备把那个算法改用到四轴上面,看了一大票论文,发现用fpga实现算法比较靠谱。。
    starsoi
        16
    starsoi  
       2015-06-10 21:41:47 +08:00   ❤️ 1
    LZ进行了HW vs SW算法结果的比较,SW是Python实现,只是对图像输出的精度进行了比较。
    既然用了Zynq,何不试着用Zynq ARM里的NEON来实现SW算法,和HW算法进行一下性能的比较。如果是HW胜,可以进一步考虑给图像处理IP做一个linux下的driver,让linux/zynq下运行的程序可以使用FPGA上的IP来加速图像处理算法。还可以把IP串起来做一个reconfigurable image processing pipeline,比如先缩放后旋转再滤波之类的,来加速对视频串流的处理
    dtysky
        17
    dtysky  
    OP
       2015-06-10 22:53:12 +08:00
    @starsoi

    感谢建议

    肯定是HW胜的,这个不用怀疑
    我用py做软仿是因为ARM仿是需要器件的,考虑有些用户是不会用ZYNQ而是用别的,为了兼容性所以没这么做,而且ARM上做的话就是opencv,其实也没什么区别。。

    linux那个我考虑过,但是本人linux经验不足,开发driver可能比较困难,目前只能开发纯嵌入式环境下的driver(不知道这种说法对不对),如果阁下有兴趣我们可以探讨探讨

    IP的设计我是考虑尽量去耦、分离的,怎么串起来是用户自身决定的

    `~~本质上这是一个快速开发IP的平台,模块都是附带的哈哈。。。~~`
    想过直接写一个py实现的verilog + systemverilog解析器直接绕过Modelsim,然后根据需求平台和器件生成IP文件,不过似乎难度和需求精力有点大了对于我。。。
    starsoi
        18
    starsoi  
       2015-06-10 23:19:06 +08:00
    @dtysky

    IP的去耦和分离是对的。我的设想是,开发一个IP间的可配置(最好是runtime reconfigurable)的通信框架,让图像数据能被多个IP处理:input data->IP1->IP2->IP3->output data。用户可以在ARM上配置,IP1是什么功能,参数是什么,IP2是什么功能,参数是什么,etc..。一种方案是用partial reconfiguration,比如FPGA上设置3个reconfigurable region。这时数据流是input data->R1->R2->R3->output data,然后对所有可以使用的IP生成它们的partial bitstream,这样用户就可以选择R1, R2, R3里分别载入什么IP,实现动态配置。

    >>想过直接写一个py实现的verilog + systemverilog解析器直接绕过Modelsim

    没看明白。。你是想做一个verilog仿真器?看波形的那种?那么这个东西只是测试用的,生成IP不需要啊
    dtysky
        19
    dtysky  
    OP
       2015-06-10 23:36:06 +08:00
    @starsoi

    IP间可重配置可以实现的程度是有限的,我已经最大程度的去做了这样的努力了,但是有些东西没有办法
    比如对于排序滤波器,我可以让IP间去配置“序号”来决定工作方式是中值滤波器还是最大最小滤波器,但是窗口大小现在是没有办法实现这种配置的,这和FPGA自身的特性有关,这类参数只有在一开始就被设置成固定的值



    算是仿真器,不过为图像处理特化吧,最后用户只需要在一个界面新建要设计的模块,然后设定测试图像和测试数据,编写HDL主程序和仿真程序,可以实现一键测试和一键生成,不过仔细想想似乎也没有什么特别的需求。。。没必要做成这种程度的样子。。。
    生成IP是另一部分吧,主要是这几家的IP封装规范和官方的一些IP有些不太一样。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1078 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:05 · PVG 02:05 · LAX 10:05 · JFK 13:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.