新闻  |   论坛  |   博客  |   在线研讨会
cpld的入门交流之二:秒信号发生器
yanqin | 2009-04-16 18:23:13    阅读:1802   发布文章

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

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客