电工电子设计

1.基本概念

EDA:Electronic design automation,电子设计自动化。是指利用计算机辅助设计(CAD)软件,来完成超大规模集成电路(VLSI)芯片的功能设计、综合、验证、物理设计(包括布局、布线、版图、设计规则检查等)等流程的设计方式。(节省人力与时间,提高效率)

CPLD:Complex Programmable logic device,复杂可编程逻辑器件。采用CMOS EPROM、EEPROM、快闪存储器和SRAM等编程技术,从而构成了高密度、高速度和低功耗的可编程逻辑器件。主要由逻辑块、可编程互连通道和I/O块三部分构成。(其中集成了很多可编程的数字逻辑单元,最后实现什么样的功能就是靠烧进去的是是么样的程序,比如烧进去的是计数器,那么实现的就是计数器的功能)

FPGA:Field Programmable Gate Array,现场可编程逻辑门阵列。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点

VHDL:Very-High-Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言。是一种用于电路设计的高级语言,与其他硬件描述语言相比,其具有语言简洁、灵活性强、不依赖于器件设计等特点。

2.VHDL语言的理解与解读(if语句)

#十一进制加法计数器
LIBRARY ieee;--打开ieee库

USE ieee.std_logic_1164.all;--使用ieee库中std_logic_1164程序包中的所有项目

use ieee.std_logic_unsigned.all;--使用ieee库中std_logic_unsigned程序包中的所有项目
                                 (非符号数)

use ieee.std_logic_arith.all;--使用ieee库中std_logic_arith程序包中的所有项目
                                 (算数运算)

ENTITY counter IS--实体counter开始

    generic(number:integer:=10);--定义静态参数number为10的整数

PORT--端口

(   inputdata  : IN INTEGER RANGE 0 TO 15;--inputdata为输入整数范围0-15

inclk     : IN STD_LOGIC;--inclk为输入的标准逻辑数据(数字时钟)

clear     : IN STD_LOGIC;--clear为输入的标准逻辑数据(清除信号)

enable    : IN STD_LOGIC;--enable为输入的标准逻辑数据(使能信号)

load   : IN STD_LOGIC;--load为输入的标准逻辑数据(装载信号)

          countoutput  : OUT INTEGER RANGE 0 TO 15 );--countoutput为输出范围为0-15的整数

END counter;--counter的实体结束

ARCHITECTURE a OF counter IS--定义实体counter对应的结构体a开始

    SIGNAL countbuffer : INTEGER RANGE 0 to 15;--定义信号countbuffer整数范围为0-15

    signal  countlogic: std_logic_vector(3 downto 0);--定义信号countlogic为4位的标准逻辑向量

BEGIN--结构体开始

PROCESS (inclk, clear)--进程,其中inclk和clear为本进程的敏感信号(当敏感信号发生变化时,进程才会开始)

    BEGIN--进程开始

    IF clear = '0' THEN  --若clear=0,那么执行下一条语句

        countbuffer<= 0;  --countbuffer清零

    ELSIF (inclk'EVENT AND inclk= '1') THEN --若clear不为0,且inclk上升沿到达,那么执行下一条语句 

        IF load = '1' THEN    --若load=1,则执行下一条语句

            countbuffer <= inputdata;   --将inputdata的值赋值给countbuffer 

        ELSE  --否则

            IF (enable = '1') and (countbuffer<number) THEN--如果clear不为0,load不为1,enable为1,那么执行下一条语句

                countbuffer<=countbuffer+1;    --countbuffer加1

            ELSif (enable = '1') and (countbuffer>=number) then      --否则如果enable为1,且countbuffer大于等于number定义的值,执行下一条语句     

                  countbuffer<=0;--countbuffer清零

            else--否则

              countbuffer <=countbuffer;    --countbuffer的值不变

            END IF;  --结束if语句      

        END IF;  --结束if语句

    END IF;  --结束if语句

END PROCESS;--结束进程

countoutput<= countbuffer;--countbuffer赋值给countoutput输出

 END a;--结束结构体a

同步加法计数器

clear清零信号,异步控制

load装置数据信号,同步控制

enable 使能信号,同步控制



      countbuffer就是一个数据缓冲器,相当于一个中间变量,因为输出countoutput不能再次作为输入,所以引入一个中间变量。

           过程依次为:库--程序包--实体(定义系统的输入与输出)--结构体(关键所在,定义系统的行为、元件及内部的连接关系,即描述其逻辑功能。)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值