搜索
bottom↓
回复: 16

做了个_★★_航空模型直升机_★★_的CCPM信号处理,开源VHDL,ALTERA的EPM7512AETC144,替

[复制链接]

出0入0汤圆

发表于 2009-10-13 14:46:08 | 显示全部楼层 |阅读模式
最近,(只是)打算用 ALTERA 的 EPM7512  来做个东西。。。现在报价很混乱。。。

我买的 EPM7064 才 8 元一片,,512的容量是064的八倍,,512的价格应该不会超过 50元RMB 吧!

大家最近买的价格是多少呢??————交谈交谈————谢谢!!——我想买两片。

(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
或者帮忙推荐推荐:::引脚数更少的,,便宜的芯片————谢谢啦!!!我只需要很少的引脚数啊!!


VHDL  完全OK了... (原文件名:E016改到底3.jpg)

出0入0汤圆

 楼主| 发表于 2009-10-13 14:49:19 | 显示全部楼层
LIBRARY IEEE;
USE IEEE.Std_Logic_1164.ALL;
USE IEEE.Std_Logic_Arith.ALL;
USE IEEE.Std_Logic_Unsigned.ALL;

entity My_Lhx is
        port (clk_1M,I1,I2,I6,I4,I3:IN Std_Logic;
                O1,O2,O6,Ot4,O3:Out Std_Logic);
end My_Lhx;

architecture inference of My_Lhx is
        signal C1:Std_Logic_Vector(11 Downto 0);
        signal C2:Std_Logic_Vector(11 Downto 0);
        signal C6:Std_Logic_Vector(11 Downto 0);
        signal C4:Std_Logic_Vector(11 Downto 0);
        signal C3:Std_Logic_Vector(11 Downto 0);
        signal R1:Std_Logic_Vector(11 Downto 0);
        signal R2:Std_Logic_Vector(11 Downto 0);
        signal R6:Std_Logic_Vector(11 Downto 0);
        signal R4:Std_Logic_Vector(11 Downto 0);
        signal R3:Std_Logic_Vector(11 Downto 0);
        signal T1:Std_Logic_Vector(7 Downto 0);
        signal T2:Std_Logic_Vector(7 Downto 0);
        signal T6:Std_Logic_Vector(7 Downto 0);
        signal T4:Std_Logic_Vector(7 Downto 0);
        signal T3:Std_Logic_Vector(7 Downto 0);

        signal J1:Std_Logic_Vector(11 Downto 0);
        signal J2:Std_Logic_Vector(11 Downto 0);
        signal J6:Std_Logic_Vector(11 Downto 0);
        signal J3:Std_Logic_Vector(11 Downto 0);
        signal J4:Std_Logic_Vector(11 Downto 0);

        signal Wr1,Wr2,Wr6,Wr4,Wr3:Std_Logic;
begin
  Ot4 <= Wr4;
  process (clk_1M)
  begin
        if (clk_1M'EVENT and clk_1M='1') then
                if (I1 = '0') then
                  T1 <= T1 + '1';
                  if (T1 = Conv_Std_Logic_Vector(252,8) and C1 > Conv_Std_Logic_Vector(511,12)) then
                        Wr1 <= '1';
                        R1 <= C1;
                  else
                        Wr1 <= '0';
                  end if;
                  if (T1 > Conv_Std_Logic_Vector(254,8)) then
                        C1 <= "000000000000";
                  end if;
                else
                  C1 <= C1 + '1';
                  T1 <= "00000000";
                  Wr1 <= '0';
                end if;                -- END Part Input 1#
                if (I2 = '0') then
                  T2 <= T2 + '1';
                  if (T2 = Conv_Std_Logic_Vector(252,8) and C2 > Conv_Std_Logic_Vector(511,12)) then
                        Wr2 <= '1';
                        R2 <= C2;
                  else
                        Wr2 <= '0';
                  end if;
                  if (T2 > Conv_Std_Logic_Vector(254,8)) then
                        C2 <= "000000000000";
                  end if;
                else
                  C2 <= C2 + '1';
                  T2 <= "00000000";
                  Wr2 <= '0';
                end if;                -- END Part Input 2#
                if (I6 = '0') then
                  T6 <= T6 + '1';
                  if (T6 = Conv_Std_Logic_Vector(252,8) and C6 > Conv_Std_Logic_Vector(511,12)) then
                        Wr6 <= '1';
                        R6 <= C6;
                  else
                        Wr6 <= '0';
                  end if;
                  if (T6 > Conv_Std_Logic_Vector(254,8)) then
                        C6 <= "000000000000";
                  end if;
                else
                  C6 <= C6 + '1';
                  T6 <= "00000000";
                  Wr6 <= '0';
                end if;                -- END Part Input 6#
                if (I4 = '0') then
                  T4 <= T4 + '1';
                  if (T4 = Conv_Std_Logic_Vector(252,8) and C4 > Conv_Std_Logic_Vector(511,12)) then
                        Wr4 <= '1';
                        R4 <= Conv_Std_Logic_Vector((375 - Conv_Integer(C4)/4),12);
                  else
                        Wr4 <= '0';
                  end if;
                  if (T4 > Conv_Std_Logic_Vector(254,8)) then
                        C4 <= "000000000000";
                  end if;
                else
                  C4 <= C4 + '1';
                  T4 <= "00000000";
                  Wr4 <= '0';
                end if;                -- END Part Input 4#
                if (I3 = '0') then
                  T3 <= T3 + '1';
                  if (T3 = Conv_Std_Logic_Vector(252,8) and C3 > Conv_Std_Logic_Vector(511,12)) then
                        Wr3 <= '1';
                        R3 <= C3;
                  else
                        Wr3 <= '0';
                  end if;
                  if (T3 > Conv_Std_Logic_Vector(254,8)) then
                        C3 <= "000000000000";
                  end if;
                else
                  C3 <= C3 + '1';
                  T3 <= "00000000";
                  Wr3 <= '0';
                end if;                -- END Part Input 3#
        end if;
  end process;

  process (Wr1,clk_1M)
  begin
        if (Wr1 = '1') then
          J1 <= R1 - R4;
        elsif (clk_1M'EVENT and clk_1M='1') then
          if (J1 = "000000000000") then
                O1 <= '0';
          else
                O1 <= '1';
                J1 <= J1 - '1';
          end if;
        end if;
  end process;

  process (Wr2,clk_1M)
  begin
        if (Wr2 = '1') then
          J2 <= R2 + R4;
        elsif (clk_1M'EVENT and clk_1M='1') then
          if (J2 = "000000000000") then
                O2 <= '0';
          else
                O2 <= '1';
                J2 <= J2 - '1';
          end if;
        end if;
  end process;

  process (Wr6,clk_1M)
  begin
        if (Wr6 = '1') then
          J6 <= R6 + R4;
        elsif (clk_1M'EVENT and clk_1M='1') then
          if (J6 = "000000000000") then
                O6 <= '0';
          else
                O6 <= '1';
                J6 <= J6 - '1';
          end if;
        end if;
  end process;

  process (R3)
  begin
        if (R4(11) = '0') then        -- LuoJu '-'
          J4 <= R3 + Conv_Std_Logic_Vector((Conv_Integer(R4)/2),12);                -- YouMen +
        else                                        -- LuoJu '+',Youmen No Change
          J4 <= R3;
        end if;
  end process;

  process (Wr3,clk_1M)
  begin
        if (Wr3 = '1') then
          J3 <= J4;                        -- Youmen Use J4 Not R3
        elsif (clk_1M'EVENT and clk_1M='1') then
          if (J3 = "000000000000") then
                O3 <= '0';
          else
                O3 <= '1';
                J3 <= J3 - '1';
          end if;
        end if;
  end process;
end inference;

((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((  2009  /10 /13   17:45---最终版本  ((((((((((((((

出0入0汤圆

发表于 2009-10-13 16:28:52 | 显示全部楼层
同问引脚数更少的,,便宜的芯片

出0入0汤圆

发表于 2009-10-13 17:08:43 | 显示全部楼层
7128全新的都超过50了,再网上的型号用的少,不但难买,而且很贵,不知用在什么场合,或许可以用max ii系列代替,epm570散买35元左右一片

出0入0汤圆

发表于 2009-10-13 17:18:11 | 显示全部楼层
还是 MAX II 好一点

实在不行可以用 Xilinx的 CPLD

出0入0汤圆

发表于 2009-10-13 17:41:08 | 显示全部楼层
我买的epm3256-100是50块钱一片

如果不是为了兼容5V io
还是用max ii好,便宜并且好买

出0入0汤圆

 楼主| 发表于 2009-10-13 17:48:04 | 显示全部楼层
最终版本的 VHDL 已经出来了...4楼的朋友,,EPM570 不错啊,,,关键是 是否能放得进去????

我很久_____没摸 CPLD 了,,不知道 EPM 570 的容量是多少的????   ALTERA MAX PLUS II 10.2 版本找不到啊!?

EPM 570  是不是需要外接 存储器的啊???____那,,使用起来就不如::::EPM 7512 方便啊....?(我不知道 570 是属于 FPGA吗??)

出0入0汤圆

发表于 2009-10-13 18:08:54 | 显示全部楼层
EPM570 有570个 LE

算是 比较大了

出0入137汤圆

发表于 2009-10-13 18:17:14 | 显示全部楼层
用maxII开发环境就不能用maxplusII了,需要用quartusII了

出0入0汤圆

 楼主| 发表于 2009-10-14 09:04:51 | 显示全部楼层
谢谢,几位!!!----可是还有个问题没得解答...(我英文不好,,看了EPM570的资料,,)还不知道它是 不是 需要外接 存储器 ??

航空模型飞机,,肯定是 只能 使用 5V 电压的器件......  我现在的烧写器 能用MAX PLUS II 10.2版本烧写 EPM7064AETC44

不知道 quartus II 能不能也用这个烧写器...???  

((((((((((((((((((((((((((谢谢楼下几位,也谢谢楼上几位,)))))))))))))))))))))))))))那我买 EPM1270 就足够,只要便宜!!,,电压3.3V得整体考虑了.

EPM1270.PDF 里面没什么内容,,,连个芯片的引脚图都没有!!>>??怎么使用呢!

出0入0汤圆

发表于 2009-10-14 09:10:40 | 显示全部楼层
EPM570可以理解成是自带存储器的FPGA。
quartus II 可以烧写EPM7064AETC44 和EPM7064AETC44 。

还有EPM570虽然号称有570个LE,但我实际综合的时候发现,7000系列的LE比较好使,会用得少一些,也就是说可能会出现EPM7512能运行的了的程序,但EPM570上可能会放不下。

出0入0汤圆

发表于 2009-10-14 09:13:38 | 显示全部楼层
quartus支持并口以及USB烧写器,EPM570是3.3V供电,io管脚支持5V输入的,但是输出只能3.3V,对于一般的TTL电路应该没问题

出0入0汤圆

 楼主| 发表于 2009-10-15 16:18:27 | 显示全部楼层
谢谢大家了,,,我已经下订单,,,购买::EPM 1270 ,,,这足够 替换 EPM 7512 了。。。

出0入0汤圆

发表于 2009-10-31 12:49:12 | 显示全部楼层
为何不用单片机?

出0入0汤圆

 楼主| 发表于 2009-10-31 22:45:59 | 显示全部楼层
回13 楼,,我这个对脉冲的时间精确度要求是 1微秒,,输入有 5 路。。单片机 CCP 模块通常最多只有 3路输入啊。

1微秒的时间精密度,单片机也不可能,用软件中断的方法来处理 5个输入信号的。CPLD 是最佳选择。就是空闲的脚太多。

最后的结果::EPM570 和 EPM7512 都能满足内部逻辑量。。。我只用 11个脚,其余的脚都是多余的!!无奈啊。。

((((((((((附图:2009/10/31日——总装完成的 改装版本的 E016 航模)))))))))


单个电动机,驱动 (原文件名:Dvc00552.jpg)


7.4V的 LAMA 旧电池,能飞。 (原文件名:Dvc00553.jpg)

出0入0汤圆

发表于 2009-11-2 23:16:06 | 显示全部楼层
好漂亮

出0入0汤圆

 楼主| 发表于 2009-11-12 10:45:37 | 显示全部楼层
回 10 楼的"kent_gwk "  朋友__关于::"也就是说可能会出现EPM7512能运行的了的程序,但EPM570上可能会放不下。"

我这里的情况正好相反:::我最后修订版本的VHDL 加了一组计数单元,,,结果用 MAX PLUS II 综合要两片 EPM7512才行.!!
_______________________今天 11月12日,,到办公室,,同样最后版本的VHDL 用 EPM570 只要一片 86% 的利用率!!

还是 EPM570 强大...
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 17:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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