发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
[讨论] 和专家一起探讨:开发cyclone系列FPGA时遇到的事儿
2014-10-17 11:28:39  54061 Cyclone FPGA
分享
和专家一起探讨:开发cyclone系列FPGA时遇到的事儿
高手问答15期
小编导读:
        本期的高手问答持续时间为 10.18~11.1,我们请到了一位FPGA工程师——解工,

2222222222222222222.jpg



解工简介:

解工,现居于北京,论坛注册名:@wushengsh
熟悉altera的cyclone系列FGPA、xilinx的ZYNQ和LINUX下的驱动,
曾用ALTERA的FPGA做过列车报文编解码系统,多种规格的LED显示屏,温湿度控制系统,列车应答器子系统等。
假如小伙伴们有关于 Cyclone系列 FPGA的问题???
或者是 ZYNQ开发板 平台下的问题???
当然,也可以是提出关于单片机方面的问题,欢迎踊跃提问。

互动获奖规则:

  • 同往期一样,在本帖子下面跟帖并@wushengshi(解工),
  • 凡是提问者,均有20个积分获得。

为了营造更好的问答氛围,我们不欢迎一切与主题无关的讨论、灌水和无脑喷子。


社区高手招募
     不限专业领域、不限技术方向,只要你是一个有活力并乐于分享的开发者,只要你愿意把自己的经验收获分享给大家,帮助众多从业者共同学习、共同进步,我们就欢迎你来做客社区高手问答。
      联系方式:xiaobing@elecfans.com 快来联系小编吧!

**************************************************************************

往期回顾:
3
2014-10-17 11:28:39   评论 分享淘帖
37 个讨论
tulin 发表于 2014-10-20 15:21
编码器没有背板交换功能是什么原因呢  请指教

由于解工太忙了 我来帮助解答问题
你要交换什么?信号?编码器输出的是脉冲信号,你使用快速光耦转换就OK了啊


采集

2014-10-23 14:56:04 评论

举报

麦特拉布 发表于 2014-10-18 22:31
最近有个项目,要在一个芯片上取数据,数据通信方式是I2C,我用fpga 与芯片通信,但是问题来了?怎么看芯片 ...

你可以把IIC器件里的数据取到后,再用串口发送到上位机,这个串口你得自己实现,当然网上也有现成的IP,我曾经自己实现过一个IP,发送与接收都带128BYTE的FIFO,很好用。因为PC的电平是RS232,而FPGA是TTL电平,所以还需要一个电平转换芯片(常用的是RS232或3232,价格两三块),这样上位机就能取到FPGA采集到的数据了。至于你说的USB-BLASTER是ALTERA的调试工具。
支持解工
2014-10-18 22:31:04 评论

举报

最近有个项目,要在一个芯片上取数据,数据通信方式是I2C,我用fpga 与芯片通信,但是问题来了?怎么看芯片的数据,当然是弄个上位机啦,但是fpga怎么和PC通信呢?我想起了单片机的usb串口通信,但是据我了解Altera DE2上的上位机是直接连接usb blaster的通信的,不知道大家用过没有,到底要怎么提取数据,弄到上位机啊,求指点@wushengshi
2014-10-18 22:31:25 评论

举报

请问FATAL_ERROR:PersonalityModule:baspmdlm.c:168:1.27 - dll library <RtRainier> does not exist.   Process will terminate. 这个错误怎么处理?前几天还好用,映射没问题
2014-10-18 22:33:12 评论

举报

我有一块TFT液晶屏,是别人送的,想用FPGA进行驱动,对于液晶屏的引脚功能不太熟悉,
请帮忙看看,谢谢!
  引脚定义如下:

这个屏内部集成了 ILI9341V,这个芯片大家有相关的资料吗?谢谢
2014-10-18 22:33:32 评论

举报

最近刚接触FPGA不久 现在手上有一块xilinx SP3E开发板,简单的设计了一个流水灯的程序 通过JTAG下载方式 直接下到FPGA里 板子可以运行 因为想实现断电后重启板子自动工作,所以想把设计文件下载到XCF04S的PROM中,所有的步骤都是按照用户指南上的要求,生成了.mcs的配置文件,   
,然后对PROM进行配置,也说成功了
M0~M2的跳槽也全部连接,即M0M1M2=000,FPGA进行主串模式。可是断电之后 重启 FPGA并没有从PROM中自动加载程序,这是为什么?请大家多指教哈 这问题纠结小弟两天了........  大大求助@wushengshi  谢谢啦
2014-10-18 22:34:24 评论

举报

@wushengshi 请问C语言和Verilog能同时学吗?看到你ARM和FPGA都会?两种思维会不会冲突呢?
2014-10-20 00:17:42 评论

举报

编码器没有背板交换功能是什么原因呢  请指教
2014-10-20 15:21:21 评论

举报

我是把一个蓝牙模块设为主和GPS连接,然后放在窗子外面,另外一个设为从模块和stm32连接的,但是收到的数据前面为什么是乱码??后面就好了。。。每次收到的数据都是这样。。。有没有谁遇到过,求解答啊。。。




GPS和蓝牙原来是充电宝供电,我害怕电压不稳,所以又全部拿到实验板的上的电源输出的数据,还是直接发给电脑的,没有经过实验板,但是还是这样。。。。郁闷啊。。什么情况啊。。。
2014-10-20 15:22:16 评论

举报

小弟刚刚接触stm32的板子,以前从来没有接触过,用的是神州1号的板子,刚刚下午往板子里烧过一遍一个流水灯的程序以后板子就是白屏了不能够显示任何的东西了,往里面烧其他的程序也不能显示,求大神的帮忙,
2014-10-20 15:33:53 评论

举报

错误如下ERROR:Xst:2544 - Unsupported item in port list for module <sysclk>.
说我有非法的端口,可我确实没找出来;现在把这个模块的代码贴出来  大家帮忙看下
  1. module sysclk( CLK,
  2. pll_rst_h,
  3. sys25,
  4. sys100,
  5. sys50,
  6. sdr100,
  7. locked1,
  8. locked2,
  9. );

  10. input CLK;
  11. input pll_rst_h;
  12. output sys25;
  13. output sys100;
  14. output sys50;
  15. output sdr100;
  16. output locked1;
  17. output locked2;
  18. ////////////////////////////////////////////////////////////////////////////
  19. wire SYSCLK;
  20. wire sdr50;
  21. BUFG CLKIN (.I(CLK),
  22. .O(SYSCLK));

  23. sysdll sysclock (
  24. .CLKIN_IN(SYSCLK),
  25. .RST_IN(pll_rst_h),
  26. .CLKDV_OUT(sys25),
  27. .CLK0_OUT(sys50),
  28. .CLK2X_OUT(sys100),
  29. .LOCKED_OUT(locked1)
  30. );
  31. sdrmdll sdramclock (
  32. .CLKIN_IN(SYSCLK),
  33. .RST_IN(pll_rst_h),
  34. .CLK0_OUT(sdr50),
  35. .CLK2X_OUT(sdr100),
  36. .LOCKED_OUT(locked2)
  37. );
  38. endmodule
  39. 复制代码
复制代码

2014-10-23 14:37:32 评论

举报

下面是2选1多路选择器程序。
ENTITY MUX21A IS
PORT ( a, b, s : IN BIT;
             y : OUT BIT );
END ENTITY MUX21A;
ARCHITECTURE ONE OF MUX21A IS
  BEGIN
    PROCESS (a, b, s)
    BEGIN
      IF s = '0' THEN y<=a; ELSE y<=b;
      END IF;
    END PROCESS;
END ARCHITECTURE ONE;

                     
当s='0'时,y<=a; 那么s的波形应该和a的相同。但仿真出来怎么a和s波形不一样
本人初学VHDL,不吝赐教。谢谢!!!
2014-10-23 14:39:47 评论

举报

我想采用FPGA设计一个FIR滤波器,AD采样数据18位。因为要完成AM检波功能,需要分别设计出两个对称的FIR滤波器。要求带通范围在400Hz~10KHz,请问我该如何设计。具体的参数怎么确定?比如说阶数,系数,等等。因为以前从来没有接触过,恳请高人指点。谢谢!
用的spartan6 150t的片子,rst 是外部复位引脚。该引脚不接,或者上拉到3.3V,发现如下语句中的A,b,c 也能被正确初始化为1,0,1.。。。
这是怎么回事?
always @(posedge clk or negedge  !rst)
if(!rst)
{
A<=1'B1;
b<=1'b0;
C<=1'B1;
}

else if(...)
{
A<=...
b<=..
C<=...

}
最开始的程序:
PROCESS(nRESET,CLK) -- FIN 消抖动
BEGIN
        IF nRESET = '0' THEN
                CTLTRIGER0 <= '0';
                fliterCnt0 <= 0;
        ELSIF CLK'EVENT AND CLK = '1' THEN
                IF FIN = '0' THEN
                        IF fliterCnt0 < 50000 THEN
                                fliterCnt0 <= fliterCnt0 + 1;
                        ELSE
                                fliterCnt0 <= fliterCnt0;
                        END IF;
                        IF fliterCnt0 = 200 THEN
                                CTLTRIGER0 <= '1';
                        ELSE
                                CTLTRIGER0 <= '0';
                        END IF;
                ELSE
                        fliterCnt0 <= 0;
                        CTLTRIGER0 <= '0';
                END IF;
        END IF;
END PROCESS;



PROCESS(nRESET,CLK)
BEGIN
        IF nRESET = '0' THEN
                INWIRE <= '0';
        ELSIF CLK'EVENT AND CLK = '1' THEN
                INWIRE <= CTLTRIGER0 ;
        END IF;
END PROCESS;



PROCESS(nRESET,Addr,nWE,nCS,CLK)
BEGIN
        IF nRESET = '0' OR (Addr = conv_std_logic_vector(SUBADDR10,8) AND nCS = '0' AND nWE = '0') THEN
                hTrigCount <= X"0000";
        ELSIF CLK'EVENT AND CLK = '1' THEN
                IF CTLTRIGER0 = '1' AND INWIRE = '0' THEN
                        hTrigCount <= hTrigCount + X"0001";
                END IF;
        END IF;
END PROCESS;


测试方法,在FIN信号上外接一个脉冲计数器,CPU每隔1秒读取hTrigCount并在屏幕显示,运行一段时间后停止FIN的信号,发现CPU读出显示的数据总是比外接的脉冲计数器值少几次。发生时机无规律。

后把上图中红色部分修改为:
PROCESS(nRESET,CLK) -- FIN 消抖动
BEGIN
        IF nRESET = '0' THEN
                strig0 <= FIN;
                strig1 <= FIN;
                strig2 <= FIN;
                strig3 <= FIN;
                CTLTRIGER0 <= '0';
        ELSIF CLK'EVENT AND CLK = '1' THEN
                strig3 <= strig2;
                strig2 <= strig1;
                strig1 <= strig0;
                strig0 <= FIN;
                IF strig3 = '0' AND strig2 = '0' AND strig1 = '0' AND strig0 = '0' THEN
                        CTLTRIGER0 <= '1';
                ELSE
                        CTLTRIGER0 <= '0';
                END IF;
        END IF;
END PROCESS;

再次测试,丢失现象消失,测试几万次都没有丢一个。
注:CLK为20MHz有源晶振,FIN输入为周期为200ms,低电平25ms的脉冲波形。FPGA为CycloneII的EP2C5T144C7。

请高手帮我分析一下,有可能是什么情况产生以上结果?
我的程序是需要对FIN进行消抖处理的,因为FIN最后可能会接机械开关。后面的程序虽然能对波形发生器的信号正确处理,但我相信对机械开关肯定无**确消抖,所以这个不是我最终需要的结果。
2014-10-23 14:48:19 评论

举报

ahczqmz 发表于 2014-10-20 00:17
@wushengshi 请问C语言和Verilog能同时学吗?看到你ARM和FPGA都会?两种思维会不会冲突呢? ...

不会的  同时学习这两种语言不会发生冲突

采集

2014-10-23 15:01:55 评论

举报

study875 发表于 2014-10-20 15:33
小弟刚刚接触stm32的板子,以前从来没有接触过,用的是神州1号的板子,刚刚下午往板子里烧过一遍一个流水灯 ...

可能是  没接线  或者是线不对  你在仔细检查检查

采集

2014-10-23 15:03:23 评论

举报

麦特拉布 发表于 2014-10-18 22:31
最近有个项目,要在一个芯片上取数据,数据通信方式是I2C,我用fpga 与芯片通信,但是问题来了?怎么看芯片 ...

USB的话  还需要  写 上位机 驱动!!
直接用 串口  简单些



采集

2014-10-23 15:06:19 评论

举报

小黑羊 发表于 2014-10-23 14:37
错误如下ERROR:Xst:2544 - Unsupported item in port list for module .
说我有非法的端口,可我确实没找出 ...

locked2后面多加了个逗号 ,仿真就能查出来
采集

2014-10-23 15:16:19 评论

举报

撰写讨论

你正在撰写讨论

如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

12下一页
发讨论
关闭

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

快速回复 返回顶部 返回列表