FPGA|CPLD|ASIC论坛
直播中

1563661808

10年用户 1833经验值
擅长:电源/新能源
私信 关注
[讨论]

和专家一起探讨:开发cyclone系列FPGA时遇到的事儿

`
和专家一起探讨:开发cyclone系列FPGA时遇到的事儿
高手问答15期
小编导读:
        本期的高手问答持续时间为 10.18~11.1,我们请到了一位FPGA工程师——解工,





解工简介:

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

互动获奖规则:

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

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


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

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

往期回顾:
` 2222222222222222222.jpg

回帖(37)

carey123

2014-10-23 14:56:04
引用: tulin 发表于 2014-10-20 15:21
编码器没有背板交换功能是什么原因呢  请指教

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


采集

举报

wushengshi

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

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

1563661808

2014-10-18 22:31:04
支持解工
举报

麦特拉布

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

douyin8

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

tulin

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

这个屏内部集成了 ILI9341V,这个芯片大家有相关的资料吗?谢谢
举报

youyoulan

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

钱门振

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

tulin

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

胖子的逆袭

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




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

study875

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

小黑羊

2014-10-23 14:37:32
错误如下ERROR:Xst:2544 - Unsupported item in port list for module .
说我有非法的端口,可我确实没找出来;现在把这个模块的代码贴出来  大家帮忙看下
  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:39:47
下面是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:42:07
我想采用FPGA设计一个FIR滤波器,AD采样数据18位。因为要完成AM检波功能,需要分别设计出两个对称的FIR滤波器。要求带通范围在400Hz~10KHz,请问我该如何设计。具体的参数怎么确定?比如说阶数,系数,等等。因为以前从来没有接触过,恳请高人指点。谢谢!
举报

骨灰级发烧友

2014-10-23 14:42:56
用的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<=...

}
举报

屌丝欧欧

2014-10-23 14:48:19
最开始的程序:
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最后可能会接机械开关。后面的程序虽然能对波形发生器的信号正确处理,但我相信对机械开关肯定无**确消抖,所以这个不是我最终需要的结果。
举报

carey123

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

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

采集

举报

carey123

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

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

采集

举报

carey123

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

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



采集

举报

carey123

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

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

举报

更多回帖

发帖
×
20
完善资料,
赚取积分