zoukankan      html  css  js  c++  java
  • cpld的入门交流之二:秒信号发生器

       主页上提供了一个简易型cpld试验电路,我的原意是希望用最简单的电路完成几个简单的cpld程序试验能够快速入门。使用过开发实验
    器的网友也许都有这样的过程(我就是其中之一),花了数百元乃至上千元购买一个"开发实验系统"(板一块),下定决心要学,但是买来以后
    又不知怎样下手,还是得先看点书,找几个例程看看,然后动手编一个自认为行得通的程序,写进去试验一下?行了,原来就这么简单?的
    确是这样,这些新东西貌似复杂,其实一点难度也没有(仅仅入门),于是这块试验板干什么呢?--扔向一边,早知道这样就不用买了...,
    可惜,一块试验板的作用有两个:
        1。让你觉得化了不少钱下去不学说不过去,总得花点心思学好他,否则对不起这N百元;
        2。可以帮你做你的第一个试验,成功,树立起信心,这么简单,我也可以用cpld做产品了。
    
        cpld开发试验板的使命也就结束了。我买的实验板仅仅用过一次,做了一个分频器编完程序写入,插上晶振一看:发光二极管一闪一闪,
    而且不同的发光二极管闪烁的速度不一样,刚好按照1248的规律,太顺利了。我也尝试着自己用万能板搭了一个试验电路,cpld用atf1504也
    是做了个分频器,同样也是一次成功。
    下面我整理了一下我的程序,以供初学者了解vhdl的编程方法,程序非常简单。编程环境使用Max+Plus IIV10.12,这是一个免费的正版软件
    并不是盗版。软件可以到主页上下载,很不错的奥,尤其对我们这些初学者,很容易上手。
    
    -- max+plus ii vhdl on atf1504as - 15js44 
    -- cpld编程实验之一: 大材小用之秒信号发生器。
    -- 在进行编译处理前请修改文件名为ep44.vhd删除程序中的汉字注释,以免引起编译错误。
    -- 本程序引脚排列根据简易实验板设定。
    -- http://www.xiao-qi.com/            .晓奇工作室.     Apr.17.2002
    -- ////////////////////////////////////////////////////////////////////////////////////
    --
    --                R  R  R                    R  R  
    --                E  E  E                    E  E  
    --                S  S  S                    S  S  
    --                E  E  E                    E  E  
    --                R  R  R              H     R  R  
    --                V  V  V  V  G  G  G  C  G  V  V  
    --                E  E  E  C  N  N  N  L  N  E  E  
    --                D  D  D  C  D  D  D  K  D  D  D  
    --              -----------------------------------_ 
    --            /   6  5  4  3  2  1 44 43 42 41 40   | 
    --      #TDI |  7                                39 | RESERVED 
    --  RESERVED |  8                                38 | #TDO 
    --  RESERVED |  9                                37 | RESERVED 
    --       GND | 10                                36 | RESERVED 
    --  RESERVED | 11                                35 | VCC 
    --  RESERVED | 12       ATF1504AS - 15JS44       34 | LEDE 
    --      #TMS | 13                                33 | LED 
    --  RESERVED | 14                                32 | #TCK 
    --       VCC | 15                                31 | RESERVED 
    --  RESERVED | 16                                30 | GND 
    --  RESERVED | 17                                29 | RESERVED 
    --           |_  18 19 20 21 22 23 24 25 26 27 28  _| 
    --             ------------------------------------ 
    --                R  R  R  R  G  V  R  R  R  R  R  
    --                E  E  E  E  N  C  E  E  E  E  E  
    --                S  S  S  S  D  C  S  S  S  S  S  
    --                E  E  E  E        E  E  E  E  E  
    --                R  R  R  R        R  R  R  R  R  
    --                V  V  V  V        V  V  V  V  V  
    --                E  E  E  E        E  E  E  E  E  
    --                D  D  D  D        D  D  D  D  D  
    --
    -- ////////////////////////////////////////////////////////////////////////////////////
    
    library ieee;
    use ieee.std_logic_1164.all;
    
    entity ep44 is
    
        port (
    
    -- 66.666mhz 晶振频率输入
            hclk            : in    std_logic;
    
    -- 分频以后的秒闪信号输出
            lede            : buffer std_logic:='1';
            led             : out   std_logic:='1'
    );
        
    end ep44;
    
    architecture a of ep44 is
        begin
    
        process ( hclk )
        variable    tempcnt     : integer range 0 to 33333332;
            begin
    
    -- 这里没有使用latch锁存,但由于使用了全局时钟,就隐含锁存。因此输出是完整的低频方波
            if hclk'event and hclk = '1' then
                led     <=  not lede;
    
    -- 66.666mhz /33333333 = 2 hz
                if tempcnt = 0 then
                    tempcnt := 33333332;
                    lede    <=  not lede;           -- 取反两次等于一秒
                else
                    tempcnt :=  tempcnt - 1;
                end if;
            end if;
        end process;
    end a;
    --/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    ATF1504的内部资源比较贫乏,做了上面的工作以后资源已经消耗得差不多了。选择他做入门试验还是很不错的,atmel的芯片的一个最大好处
    是它的可擦写次数是一般其他cpld的100倍 == 10000次。而它的价格相对要便宜很多,所以极力推荐使用他。有关Max+Pluse II的使用方法请
    查看他自带的help,高手们都这么说。
    
    真诚希望eda高手为我们提供成功使用的实用代码或典型代码段,支持初学者加速成长,谢谢先:)
  • 相关阅读:
    LA 2038 Strategic game(最小点覆盖,树形dp,二分匹配)
    UVA 10564 Paths through the Hourglass(背包)
    Codeforces Round #323 (Div. 2) D 582B Once Again...(快速幂)
    UVALive 3530 Martian Mining(贪心,dp)
    UVALive 4727 Jump(约瑟夫环,递推)
    UVALive 4731 Cellular Network(贪心,dp)
    UVA Mega Man's Mission(状压dp)
    Aizu 2456 Usoperanto (贪心)
    UVA 11404 Plalidromic Subsquence (回文子序列,LCS)
    Aizu 2304 Reverse Roads(无向流)
  • 原文地址:https://www.cnblogs.com/shihao/p/2173287.html
Copyright © 2011-2022 走看看