原创 【博客大赛】原创--忆FPGA课----1

2012-3-23 23:14 2710 17 28 分类: FPGA/CPLD

 此 系列献给想学习FPGA的友们,同时也是个人学习知识的回忆与总结。

        FPGA,不知道它干嘛的,官方的解释是FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。说了那么多,都是写专有名词,也不好理解,就先不去管它吧。

     VHDL,它是什么,编程序的,怎么编写,看例子吧,解释下。

--文件名:test.vhd.
--功能:将外部输入的CLK的信号频率进行分频。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity test is
    Port (clk:in std_logic;
    bclk:out std_logic);
end test;
architecture Behavioral of test is
begin
process(clk)
variable cnt:integer;
begin
 if rising_edge(clk) then
     if cnt>=2 then cnt:=0; bclk<=not bclk;             --设置分频系数  
else cnt:=cnt+1;
end if;
  end if;
end process;
 
end Behavioral;
 

          这就是VHDL语言编写的程序,每次写的时候基本结构需要有这2部分哦。

         开始的是库文件申明,每次写代码的时候都加上去,当然你有牛X的能力也可以自己写库文件哦。 接着entity test is      这是实体名申明,然后申明端口port();,表明你这个代码有那几个端口,每个端口的输入的还是输出,或者是其他。在这里 有个文件叫test 它有一个clk 输入口,一个blck输出口。然后怎么对信号进行作用呢,看看下面是不是有个process()的程序。这里面就是对clk'信号进行作用的。process()里面有clk,它是敏感的东西,这个家伙一直再偷偷看着clk这个信号, if rising_edge(clk) then  当它是上升沿的时候(上升沿就是由低电平到高电平,咱们伟大的数字电路有说这个事情),我们有个变量variable 叫做 cnt ,它就会加1,  if cnt>=2 then cnt:=0; bclk<='1'; 加之前还得检查下这个变量是不是到2了,到2了就自动变为0,输出信号blck就变相反的电平,否则就是cnt加1 。

      几几几几几几几几几几几几几几几,假设现在有这个一高一低的clk输入信号,process()监测到clk的变化了,按照上面说的程序意思,开始第一个上升沿的时候假设blck是0,cnt是由0----》1,第二个clk上升沿来了,cnt到2后马上变0,bclk输出信号就变1了,程序就一直在干这个事情,它不会累的,除非它坏了。

    说了这些,这个程序能干嘛,我也不知道,但它是认识vhdl,FPGA的开始,慢慢来吧。现在就知道VHDL语言有几大模块,开始要那3个库文件,它支持后面程序的运作。接着就是写程序的输入输出口有几个,程序取名字叫什么,然后就写代码对信号进行操作,利用这个输入产生输出的效果。

   假如有led那种小灯呢,怎么让它亮,产生漂亮的闪烁,接下忆FPGA课--2来一起回忆下吧。

 

 

 

PARTNER CONTENT

文章评论11条评论)

登录后参与讨论

用户377235 2013-1-17 16:44

Well put, sir, well put. I'll certialny make note of that.

wxg1988 2013-1-17 08:51

YES,makes sense!

用户377235 2013-1-15 21:50

I have been so bwelidreed in the past but now it all makes sense!

用户422236 2012-5-29 15:36

不过 大体看的懂 俺是学Verilog的

用户377235 2012-4-4 10:17

值得学习

用户1650588 2012-3-31 19:00

呵呵 好文章,不过我学的是Verilog 学习了~~ 期待!!1

用户377235 2012-3-28 16:36

嗯,好文章好学习

用户377235 2012-3-28 15:44

忆FPGA课----3等待,希望可更新快点

用户403664 2012-3-22 15:46

期待忆FPGA课----2!

用户423727 2012-3-22 15:19

刚工作时,买了块xilinx的FPGA开发板,然后纠结了,各种不会,学了1个多月学不下去了,看了博主的这篇文章又点燃我的信心了笑脸

相关推荐阅读
wxg1988 2014-04-22 17:50
全球创客马拉松武汉站已经开始报名啦
星星之火,可以燎原! 全球创客马拉松在深圳、上海、北京、南京、成都等地相继点燃中国的创客之火,下一站:武汉! 改变世界,抑或改变自己,全球创客马拉松也许可以是梦想启航的地方。 英雄不问...
wxg1988 2013-10-24 13:15
液晶显示器原理LCD驱动基础
LCD显示器概述   ——》液晶显示器,LCD为英文 Liquid Crystal Display的缩写,它是一种数字显示技术,可以通过液晶和彩色过滤光源,并在平面面板上产生图像。  ...
wxg1988 2013-08-13 10:20
Arduino mini 亲手打造
Arduino,满足您创新创意的需要! Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于艺术家、设计...
wxg1988 2013-07-30 20:44
【博客大赛】STM32中断小结
  STM32中断EXTI STM32中断支持15个异常中断和240个外部中断,有256个中断优先级,其中I/O可配置为EXTI中断,捕捉外部信号,可配置为上升沿,下降沿,上升下降沿三种中...
wxg1988 2013-07-16 21:09
关注创客与开源电子,可以订阅
   http://list.qq.com/cgi-bin/qf_invite?id=04a0d177cb5a2dd6a4da786f024011139e353139950c4411 关注创客...
我要评论
11
17
关闭 站长推荐上一条 /1 下一条