虽然现在verilog语言更流行一些,但是因为某种原因,我还是准备用VHDL语言来解决问题,所以就要专门学一下VHDL。想必硬件描述语言肯定是大同小异的。这篇笔记算是参考文献中《Fundamentals of Digital Logic with VHDL Design》的阅读笔记。
目的
VHDL语言的出现主要有两个目的:
- 可以用它像精确得描述数字电路的细节,结构。
- 可以用它来模拟数字电路的行为。
VHDL编码的最小基本组成部分
我们可以这个基本组成部分理解为一个小的独立的模块,也可以想象为一块小芯片,有外面的引脚,作为和外面的模块发生交互,也有内部结构,实现逻辑功能,所以VHDL的编写也是包含这两个部分,即实体(ENTITY),还有结构(ARCHITECTURE)。
-
实体(ENTIRY) 是用来定义所谓的引脚,可以定义为输出(OUT)或者输入(IN),基本的最小的数据单位为BIT,即为二进制里的一个位。
ENTITY example1 IS PORT ( x1, x2, x3 : IN BIT ; f : OUT BIT ) ; END example1 ;
我们定义了一个叫example1的实体,端口(PORT)的x1, x2, x3被设置为输入,要用IN来表示;f为输出,要用OUT来表示。他们都是BIT类型的数据类型,在他们各自的行最后加上BIT关键字,标识他们都是BIT类型。最后统一用关键字PORT把他们用括号包起来。
-
结构(ARCHITECTURE) 是用来实现模块里的实际逻辑功能,主要是将实体里定义的信号引脚用一定的逻辑操作连接起来,基本的逻辑操作用and,or,not,即与门,或门,非门,然后将计算的信号通过
<=
将输出信号交给输出的端口, 这个符号叫做信号赋值操作符(Signal Assignment Operator)。ARCHITECTURE LogicFunc OF example1 IS BEGIN f <= (x1 AND x2) OR (NOT x2 AND x3) ; END LogicFunc ;
如上面语句显示,先是关键字ARCHITECTURE打头,后面是名字LogicFunc,然后OF后面跟着前面定义的实体的名字。信号赋值操作符右面的表达式叫做逻辑表达式(Logic Expressions),是一种赋值语句,当然VHDL还有其他类型的赋值语句,我们以后再说。
最后贴上上面的模块的逻辑电路图:
logic function参考
《Fundamentals of Digital Logic with VHDL Design》
网友评论