再看这个例子,用entity mux2说明要实现的是一个二选一的mux,然后用architecture说明其对应的逻辑。
再看一个例子,要实现一个全加器。也是先说明,然后再定义基本逻辑。
可以看到VHDL逻辑非常严谨,可控性很强。需要使用什么就先声明,再使用。代码和硬件的对应关系较强,因此更不容易出错。但是高层次设计(算法层面的代码编写)较为困难,代码量大。因此被SV/Verilog所慢慢替代。但欧洲一些国家的公司还有我国的一些军工企业,还是有使用VHDL的,大家能根据代码大概知道写的是什么就够了,不用自己去写。
然后介绍了一些运算符、位操作的东西。
再看一下模块例化,这个4选1的MUX是由三个2选1的MUX组成的,我们看代码如何编写:
- library,entity正常编写
- 用architecture struct of说明是由模块例化组成的
- component说明基本组成部件
- 下面的begin end进行模块的例化,左边的是"lowmux"等是实例化的名字,这个方向与SV相反。
再看一个8位的2选1逻辑。需要两个4位的2选一逻辑组成。代码写法也是基本一致
- library entity
- architecture struct说明由模块实例化组成
- begin end里面进行模块例化,实例名:组件名 port map里面说明端口对应关系
寄存器写法如上所示,较为简单就不进行额外说明了,需要注意使用process说明是过程赋值,类似于always块
上面这个例子说明process也可以用在组合逻辑当中。
还有诸如case语句,状态机写法请大家参考课程官方的课件,相信大家都能通过对比看懂,如果有不懂的可以问我。我这里就不一一讲了。
最后再说明一下,如果你是要找一份工作的话,不需要会写VHDL(有些读者是学生,上某门课必须要用VHDL,这种情况就没办法了,老老实实写吧,或者劝你的老师换成Verilog/SV),但是你如果能看懂对于找工作而言肯定是加分项。所以做到能看懂即可!
到这里所有课件讲解结束了,还差SHA256的Project代码讲解文章就正式完结撒花了。大家对什么感兴趣欢迎留言,我考虑后续做相关的内容。