vhdl入门(一)-vhdl的代码结构

vhdl入门(一)-vhdl的代码结构

序言

因为最近的涉及到了一些通信和传统dsp的开发,虽然现在比较火verilog,但是大部分轮子都是建立在vhdl上面的.那就在verilog的基础上拓展一下VHDL的技术栈

代码

talk is cheap , show me the code

这次由于是小小拓展一下,所以就不系统写教程了.所有知识点和细节都在注释里面.

--是注释,vhdl不区分大小写,教程一般是全部大写的,那我就全部小写吧
-------------------------------------------------------------------------
--首先是vhdl的库声明,有三个常用的库:
library ieee;
use ieee.std_logic_1164.all;
--  库名 .包名           .引用部分

--以下两个库在程序中都是默认"包含"的,所以可以不写
library standard;
use std.standard.all;

library work;
use work.all;
--------------------------------------------------------------------------
--接下来是实体(entity)声明,相当于verilog里面的module声明
entity D_NAND is 
    port (
        a,b,clk : IN  BIT;
        q       : OUT BIT
    );
end D_NAND;
--vhdl有些时候语法看起来就像是英语一样. 
--里面涵盖的信息,相当于verilog里面的外部端口声明.
--可以看出有三个端口,ab是输入端口,c是输出端口,数据类型都是BIT.
--端口类型有四种:in(输入),out(输出),inout(双向引脚),buffer(反馈引脚)
--信号类型有比较多种,常见的有:BIT,STD_LOGIC,INTEGER等
---------------------------------------------------------------------------

--接下来是结构体(architecture)部分,用来描述电路功能.
--多封装了一层architecture我个人觉得可以便捷地进行电路的版本管理吧,综合器只会选用一个结构体.
architecture d_a_b of D_NAND is 
    signal temp : BIT ;
begin
    temp <= a nand b ;
    process (clk)
    begin 
        if(clk'event and clk = '1') 
            then q <= temp ;
        end if;
    end process;
end d_a_b;
--d_a_b是architecture的名字
--注意: <= 不再是verilog里面的阻塞赋值,在这里是信号的赋值而已
-- nand是RTL级电路描述,与非
-- process是顺序执行语句,括号里面是敏感信号,类比verilog里面always后面的括号
--程序中,除了process之外,其它的都是并行在走的.相当于always
--在vhdl里面会分清楚触发process的事件,如代码便表示在时钟上升沿时触发if
------------------------------------------------------------------------------

结语

博学笃行,与时俱进

如果你想请我吃个南五的话

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小何的芯像石头

谢谢你嘞,建议用用我的链接

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值