原创 关于HDL学习

2010-8-23 21:46 1241 6 6 分类: FPGA/CPLD

         前些日子有幸接触到FPGA ,学习了VHDL语言,下面对自己在学习过程的一些感受做一些总结。主要是关于HDL语言与其他计算机软件编程语言的不同点。


1.编程思想


        相对于其它的计算机语言的学习,如C/C++ 等高级语言或者汇编低级的语言。HDL语言具有明显的特点。这不仅是由于HDL语言是硬件描述语言需要学习者了解较多数字逻辑方面的硬件电路的知识。更重要的是由于HDL语言描述的对象始终是客观的电路系统。由于电路系统内部的子系统甚至部分元件的工作状态和工作方式可以是相互独立的,互不相关的,也可以是互为因果的。这说明在任一时刻,电路系统可以有许多相关的或不相关的事件同时并行发生。例如,可以在多个独立的模块中同时进行不同方式的数据交换和处理。这种并行工作方式是任何基于CPU的软件语言所无法描述和实现的。传统的软件编程语言只能根据CPU工作方式,一队列式指令的形式来对特定的事件和信息进行控制和接收。在CPU工作的任一时间段内只能完成一种操作,因此任何程序在单CPU的计算机中的运行,永远是单向和一维的。因而程序设计也几乎只需要以一维的思维模式就可以编程了。


        HDL语言则不同,它必须适应实际的电路系统的工作方式,以并行和顺序的多种语句方式来描述在同一时刻中所有可能发生的事件。可以说,HDL语言具有描述有相关和不相关的多维时空组合的系统的作用。这需要学习者以多维并发的思维来编写程序。


2.运行和执行


        在HDL语言中虽然有类似于软件编程语言的顺序结构。如Verilog中的begin     end. VHDL 中process中的代码是顺序执行的。但是必须注意的是在HDL中的顺序结构有很大的不同。


        软件编程语言的语句是根据CPU的时钟,按时钟节拍对应的指令周期来逐条运行的。每一条指令都有确定的执行时间。但是在HDL中,从表面上看,HDL的顺序语句与软件的语句有相同的行为描述方式,但在标准的仿真执行中有很大的区别。HDL语言描述只是综合器赖以构成硬件结构的一种依据,但是顺序语句结构中的顺序语句的执行方式并非是按时钟节拍一条一条执行的,实际上,其中的每一条语句的执行时间几乎为0。也就是说,10条语句与100条语句的执行时间是相同的。在这里语句的运行和执行是不同的概念(在软件编程语言中是同一概念)。执行是指启动一条语句,允许它运行一次,而运行就是指该语句完成其设定的功能。


         虽然学习HDL语言与传统的软件编程语言有所不同,但是不论掌握哪种语言都是要求在理解语法的基础上,阅读大量的优秀代码和做大量的练习。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条