caosix 发表于 2009-10-13 14:46:08

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

最近,(只是)打算用 ALTERA 的 EPM7512来做个东西。。。现在报价很混乱。。。

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

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

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

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_491199.jpg
VHDL完全OK了... (原文件名:E016改到底3.jpg)

caosix 发表于 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---最终版本((((((((((((((

shusheng 发表于 2009-10-13 16:28:52

同问引脚数更少的,,便宜的芯片

leafing 发表于 2009-10-13 17:08:43

7128全新的都超过50了,再网上的型号用的少,不但难买,而且很贵,不知用在什么场合,或许可以用max ii系列代替,epm570散买35元左右一片

yuhang 发表于 2009-10-13 17:18:11

还是 MAX II 好一点

实在不行可以用 Xilinx的 CPLD

tkdr2001 发表于 2009-10-13 17:41:08

我买的epm3256-100是50块钱一片

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

caosix 发表于 2009-10-13 17:48:04

最终版本的 VHDL 已经出来了...4楼的朋友,,EPM570 不错啊,,,关键是 是否能放得进去????

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

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

yuhang 发表于 2009-10-13 18:08:54

EPM570 有570个 LE

算是 比较大了

pulan 发表于 2009-10-13 18:17:14

用maxII开发环境就不能用maxplusII了,需要用quartusII了

caosix 发表于 2009-10-14 09:04:51

谢谢,几位!!!----可是还有个问题没得解答...(我英文不好,,看了EPM570的资料,,)还不知道它是 不是 需要外接 存储器 ??

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

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

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

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

kent_gwk 发表于 2009-10-14 09:10:40

EPM570可以理解成是自带存储器的FPGA。
quartus II 可以烧写EPM7064AETC44 和EPM7064AETC44 。

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

leafing 发表于 2009-10-14 09:13:38

quartus支持并口以及USB烧写器,EPM570是3.3V供电,io管脚支持5V输入的,但是输出只能3.3V,对于一般的TTL电路应该没问题

caosix 发表于 2009-10-15 16:18:27

谢谢大家了,,,我已经下订单,,,购买::EPM 1270 ,,,这足够 替换 EPM 7512 了。。。

vr2whf 发表于 2009-10-31 12:49:12

为何不用单片机?

caosix 发表于 2009-10-31 22:45:59

回13 楼,,我这个对脉冲的时间精确度要求是 1微秒,,输入有 5 路。。单片机 CCP 模块通常最多只有 3路输入啊。

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

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

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

http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_498169.jpg
单个电动机,驱动 (原文件名:Dvc00552.jpg)

http://cache.amobbs.com/bbs_upload782111/files_21/ourdev_498170.jpg
7.4V的 LAMA 旧电池,能飞。 (原文件名:Dvc00553.jpg)

kclc 发表于 2009-11-2 23:16:06

好漂亮

caosix 发表于 2009-11-12 10:45:37

回 10 楼的"kent_gwk "朋友__关于::"也就是说可能会出现EPM7512能运行的了的程序,但EPM570上可能会放不下。"

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

还是 EPM570 强大...
页: [1]
查看完整版本: 做了个_★★_航空模型直升机_★★_的CCPM信号处理,开源VHDL,ALTERA的EPM7512AETC144,替