Blogs

学习VHDL - 基础知识

enrico garante.2013年6月15日5点评论

由于FPGA对业余爱好者变得越来越多,因此学习如何使用它们对于某些应用程序来说真正有用,如DSP和视频生成;此外,能够在工作市场上请求在VHDL / Verilog中代码的工程师。

在本教程中,我将介绍Xilinx ISE和VHDL的基础知识。我将把我的代码从Digilent Basys2基地基于Digilent:它真的很便宜(特别是学生),并且在船上有很多功能,您可以从下面的图片中看到。 

 

VHDL是VHSIC硬件描述语言的首字母缩略词(其中VHSIC代表非常高速集成电路)。它成为1987年成为IEEE标准,它是最常用的语言(以及Verilog)来描述数字电子系统。

VHDL似乎就像任何其他计算机语言一样,因为它使用许多常见的构造,就像那样,那么,否则。但主要区别在于它是一个数据流语言:这意味着它描述了如何同时连接和执行几块代码块。每个代码块描述数字子系统,具有输入和输出。 

VHDL编程由两个阶段组成:

  1. 实体描述:我们说明从外部看到块(端口,公共汽车,配置......)
  2. 架构描述:我们描述块在内部工作的工作原理。

已经足够的理论,让我们看看一些代码......

我们开始引用主VHDL库并使用std_logic_1164.all包,其中包含多个数据类型,逻辑操作和函数。这应该包含在您创建的每个实体中。

请注意,每个指令都以分号终止。创建注释只使用 - (双重减号)。 

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- This is a comment.

然后我们将我们的“黑匣子”定义为“实体”语句,然后是其名称,关键字“是”。

下一个陈述“端口”描述了在外部暴露了多少“线”;该列表以这种方式组成:

名称    :     direction       type;

列表的最后一个元素未与分号终止,但我们需要终止端口语句。

STD_Logic类型用于表示数字值。它可以假设若干值,如0,1,x(未定义),z(高阻抗)和许多其他值。

最后,我们结束了我们实体的定义与“结束”关键字。 

entity AndPort is
    Port ( a : in  STD_LOGIC;
           b : in  STD_LOGIC;
           y : out  STD_LOGIC);
end AndPort;

现在,我们描述了我们的组件如何使用“架构”语句,然后是其名称,并指定它引用它引用的关键字“of”。

关键字开始和结束将边界我们的体系结构语句。 

architecture Behavioral of AndPort is
 
begin
 

“过程”声明是实际描述了我们组件的行为:它类似于软件编程语言的功能。

我们宣布这一点:

名称 : process     (sensitivity list)

并由通常的开始和结束关键字界定。

敏感性列表是不断轮询的信号列表:其中一个变更导致进程执行。

在我们的过程中有我们的说明:我们分配给输出信号y的结果A和B之间的逻辑和操作。这是通过的

func:process(a,b)
begin
   
          y<=(a and b);
end process;
 
end Behavioral;

那就是它!这是参考的完整代码。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
 
entity AndPort is
    Port ( a : in  STD_LOGIC;
           b : in  STD_LOGIC;
           y : out  STD_LOGIC);
end AndPort;
 
architecture Behavioral of AndPort is
 
begin
 
func:process(a,b)
begin
              
    y<=(a and b);
end process;
 
end Behavioral;

在下面的视频中,我展示了如何在ISE WebPack中创建一个新项目,并使用ISIM模拟它。

在HD和Fullscreen中观看: http://www.youtube.com/watch?v=rMKXHDL982U


[]
评论 vitpeppar.2013年6月17日
非常好!但是,我想,如果我错了,请纠正我,对于你使用的评论来说,你使用两个减号 -
[]
评论 Cfelton.2013年6月18日
这是正确的,“ - ”用于评论。

在VHDL 2008中,增加了评论
“/ * * /”。
[]
评论 贝加兰特2013年7月2日
嗨Vitpeppar,我很抱歉错误,谢谢你报告它!
[]
评论 Pini_kr.2013年8月9日
我想建议自学研究VHDL项目,可以提供帮助。
IP TTL过滤器,基于小示例,示出了如何使用VHDL中的列表以简化数据包操作,从VHDL的随机数生成,使用Perl脚本自动化状态机编码等......
请访问BKNPK并查找此IP TTL过滤器以及其他自学项目..

[]
评论 Sanghamitra6.2016年8月4日
如何使用VHDL找到一个人的补充数组的元素

要发布回复评论,请单击连接到每个注释的“回复”按钮。发布新的评论(不是回复评论),请在评论的顶部查看“写评论”选项卡。

注册将允许您参加所有相关网站的论坛,并为您提供所有PDF下载。

注册

我同意 使用条款隐私政策.

尝试我们偶尔但流行的时事通讯。非常容易取消订阅。
或登录