打印
[Actel FPGA]

VHDL 的 helloword

[复制链接]
1678|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FVJFIFE|  楼主 | 2011-8-24 09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
----------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date:    16:47:08 08/23/2011
-- Design Name:
-- Module Name:    vigin1 - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity vigin1 is
     port (
              a, b :in bit;
                  s :in bit;
                  y: out bit;

              )

end vigin1;
architecture Behavioral of vigin1 is
begin
     y <= a  when  s = '0'  else
             b;
end Behavioral;

相关帖子

沙发
FVJFIFE|  楼主 | 2011-8-24 09:46 | 只看该作者
此例VHDL有两大部分组成:
entity(实体)   用图示表示出来,应该为一个器件的示意图
architecture(结构) 图示出来应该是一个器件的内部示意图

使用特权

评论回复
板凳
FVJFIFE|  楼主 | 2011-8-24 09:59 | 只看该作者
VHDL结构体中用于描述逻辑功能和电路结构的语句分为顺序语句和并行语句两部分,顺序语句的执行方式类似于普通软件语言的程序执行方式,都是按照语句的前后排列方式顺序执行的。而在结构体的并行语句,无论多少行,都是同时执行的,与语句的前后次序无关。

使用特权

评论回复
地板
FVJFIFE|  楼主 | 2011-8-24 10:03 | 只看该作者
其实一楼的例子还可以有很多种实现方式

entity vigin1 is
     port (
              a, b :in bit;
                  s :in bit;
                  y: out bit;

              )

end vigin1;
architecture Behavioral of vigin1 is
begin
     y <= a  AND  (NOT s)   ;
   e <= b  AND  AND s;
    y <=d  OR el
end Behavioral;

无论例子一的when else 语句还是此时的布尔方程表达式,只要是在结构体里面的语句就是平行执行的,无论多少行,都同时执行

使用特权

评论回复
5
FVJFIFE|  楼主 | 2011-8-24 10:07 | 只看该作者
architecture Behavioral of vigin1 is
begin
y <=(a AND (NOT S) ) OR (b AND S );
end Behavioral;

使用特权

评论回复
6
FVJFIFE|  楼主 | 2011-8-24 10:10 | 只看该作者
architecture Behavioral of vigin1 is
begin

  PROCESS (a,b,s) BEGIN
        if s = ‘0’ THEN
           y <=a;    ELSE   y<=b;

END IF;

     END   PROCESS;
end Behavioral;

使用特权

评论回复
7
FVJFIFE|  楼主 | 2011-8-24 10:20 | 只看该作者
下面要对上述例子中出现的语句做个详细说明

一个VHDL程序,必须能够完整的表达一个器件结构及电路功能。
因此都必须实现实体和结构体两部分
实体描述的是器件的端口构成和信号属性

ENTITY  e_name is

pert (p_name : port_m data_type;
         ...
          p_namei : port_mi data_type;
)   ieee 93标准

end entity  e_name;

关键词部分大小写

使用特权

评论回复
8
FVJFIFE|  楼主 | 2011-8-24 10:44 | 只看该作者
实体名字不能以数字开头,一般得能看出芯片的名字由实体名

端口名就是用户自己设定的名字了

端口模式有4种, in  out  inout buffer   

buffer模式,需要输入数据时候,只允许内部回读输出的信号

使用特权

评论回复
9
FVJFIFE|  楼主 | 2011-8-24 10:47 | 只看该作者
数据类型bit     整型数据类型 integer 布尔数据类型 Boolean  标准轮机位数据 std_logic  位数据类型bit

使用特权

评论回复
10
FVJFIFE|  楼主 | 2011-8-24 11:25 | 只看该作者
所有顺序的描述语句必须放在进程语句中   在单独的进程内部,跑的是顺序语句

进行语句里面的 变量,被称为是敏感信息表, 通常要求将进程中的      输入信号     都放在敏感信息表中

而process语句的执行依赖于敏感信号的变化,当某一敏感信号 从原来的1跳变道0 反之亦然,  就将启动此进程语句,而在执行一遍整个进程的顺序语句后。便进入等待状态,知道下一次敏感信号中某一信号的跳变才再次进入启动——运行  状态

进程其实一直在等待, 等待这些敏感信息表的变量变化


在一个结构体中可以包含人一个进程语句,所有的进程语句都是并行语句

使用特权

评论回复
11
kevin04021101| | 2011-8-24 23:24 | 只看该作者
顶一下~

使用特权

评论回复
12
明天我还来| | 2011-10-27 17:07 | 只看该作者
支持一下。顶顶顶。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

897

帖子

1

粉丝