查看: 15781|回复: 16

如何在HDL中调用并使用MAX10的ADC(单通道)

  [复制链接]
  • TA的每日心情
    开心
    2015-1-25 14:43
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2015-1-25 14:37:18 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 狸猫三太子 于 2015-1-25 14:43 编辑

    一直对MAX10的ADC和内置FLASH情有独钟,认为是提高系统集成度的利器。因此这次MAX10的开发板实用也集中在这两个领域。

    因为altera对于MAX10中ADC的官方使用例程都是使用nios,用C去基于地址总线的操作,但我不熟悉nios,也不想用软核(应该说是厌恶……),于是尝试基于HDL语言(本例中基于verilog)的直接例化调用方法,用纯正的FPGA方法去使用这个ADC~

    过程真是让人百般纠结啊……因为MAX10本身硬件特点的原因,导致PLL的使用非常麻烦,最终采用了一种非常奇特的手段才实现了将PLL连接到ADC的工作…

    声明:由于altera官方板的模拟通道需要外部输入,因此这次的例程使用的是艾瑞(arrow)的BeMicro Max10开发板。只是芯片封装变成了484管脚的BGA,芯片型号一样是MAX10M08,因此官方板的做法也是一样的。

    下面正式开始!

    首先,来看一下艾瑞的这块板子:

    艾瑞开发板介绍.png

    在图上左上角,有一个Photo Resistor(光敏电阻),连到了MAX10的模拟输入上,这次我们的主角就是它。
    MAX10芯片的左边,还有一排8个LED灯,需要用它们来实现ADC的可视化输出。

    基本实验内容如下:首先将光敏电阻接到内部的ADC上,然后启动ADC采集光敏电阻的输出,最后读取该输出并将12位数据的高8位通过8个LED输出。

    首先新建一个工程,芯片选型为10M08DAF484C8GES。从芯片编号中可得知是484管脚的,C8速度等级,ES工程样片

    然后新生成一个.v文件,取名随意,但是要注意最好模块名和文件名统一,这样便于管理。然后在fire选项卡里将其设置为顶层文件,如下图所示:
    设置为顶层.jpg

    第一步,例化PLL,生成时钟:

    然后在窗口右边的IP核选项栏上找到PLL的IP核
    选中PLL的IP核.jpg
    这里要先说明一下,MAX10的ADC对于时钟的输入有着特殊的约定,大家可以看altera的官方文档 ug_m10_adc_CH.pdf (1.08 MB, 下载次数: 143)
    ADC的例化说明.jpg
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2015-8-5 08:38
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2015-1-26 10:02:05 | 显示全部楼层
    学习经验!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-1-26 13:32:49 | 显示全部楼层
    好文章,积极顶贴
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-10-5 14:38
  • 签到天数: 175 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-1-27 01:01:41 | 显示全部楼层
    劳尔戈 发表于 2015-1-26 13:32
    好文章,积极顶贴

    楼主腻害呀,我还是一只小菜鸟
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-1-31 15:01:22 | 显示全部楼层
    请问楼主能提供一下你完整的例子吗,我这是菜鸟,弄半天还没弄出来呢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-2-2 16:13:50 | 显示全部楼层
    请问楼主,我这编译时总报Error (170084): Can't route signal "~GND" to atom "ADC1:ADC|ADC1_modular_adc_0:modular_adc_0|altera_modular_adc_control:control_internal|fiftyfivenm_adcblock_top_wrapper:adc_inst|fiftyfivenm_adcblock_primitive_wrapper:adcblock_instance|primitive_instance"
    错误是怎么回事
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-12 09:30
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2015-6-26 10:09:10 | 显示全部楼层
    我照着上面的弄,但adc模块并没有运行起来,adc的数据有效信号一直为低,也不知道为什么。楼主能不能上传一下你的工程呢。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-8-16 21:42:53 | 显示全部楼层
    学习了~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-11-27 20:01:47 | 显示全部楼层
    太好了 感谢分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-9 13:54
  • 签到天数: 297 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2015-12-23 11:00:26 | 显示全部楼层
    学习。。。。。。。。。。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 02:19 , Processed in 0.198934 second(s), 34 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.