vhdl编程的一些心得体会[初学者必看]

vhdl编程的一些心得体会[初学者必看]

ID:28000400

大小:56.00 KB

页数:6页

时间:2018-12-07

vhdl编程的一些心得体会[初学者必看]_第1页
vhdl编程的一些心得体会[初学者必看]_第2页
vhdl编程的一些心得体会[初学者必看]_第3页
vhdl编程的一些心得体会[初学者必看]_第4页
vhdl编程的一些心得体会[初学者必看]_第5页
资源描述:

《vhdl编程的一些心得体会[初学者必看]》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、WORD格式整理版VHDL编程的一些心得体会VHDL是由美国国防部为描述电子电路所开发的一种语言,其全称为(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage。与另外一门硬件描述语言VerilogHDL相比,VHDL更善于描述高层的一些设计,包括系统级(算法、数据通路、控制)和行为级(寄存器传输级),而且VHDL具有设计重用、大型设计能力、可读性强、易于编译等优点逐渐受到硬件设计者的青睐。但是,VHDL是一门语法相当严格的语言,易学性差,特别是对于

2、刚开始接触VHDL的设计者而言,经常会因某些小细节处理不当导致综合无法通过。为此本文就其中一些比较典型的问题展开探讨,希望对初学者有所帮助,提高学习进度。一.关于端口VHDL共定义了5种类型的端口,分别是In,Out,Inout,Buffer及Linkage,实际设计时只会用到前四种。In和Out端口的使用相对简单。这里,我们主要讲述关于buffer和inout使用时的注意事项。inout和buffer区别INOUT为输入输出双向端口,即从端口内部看,可以对端口进行赋值,即输出数据。也可以从此端口读入数据,即输入

3、;BUFFER为缓冲端口,功能与INOUT类似,区别在于当需要读入数据时,只允许内部回读内部产生的输出信号,即反馈。举个例子,设计一个计数器的时候可以将输出的计数信号定义为BUFFER,这样回读输出信号可以做下一计数值的初始值。buffer顾名思义就是缓存,它是作为输出使用的,因为在模块内,是不可以将输出赋值给其他信号的,例如定义b:outstd_logic;我们现在要将b赋值给信号a,就会出错,但是如果b的类型为buffer就可以执行操作;inout是双向端口,即可以作为输入也可以作为输出,跟buffer的作用

4、完全不同,要注意的是inout类型的数据在不作为输入使用时必须被置为高阻“Z”状态,否则它作为输出的功能将不能正确执行。与Out端口比,Buffer端口具有回读功能,也即内部反馈,但在设计时最好不要使用buffer,因为buffer类型的端口不能连接到其他类型的端口上,无法把包含该类型端口的设计作为子模块元件例化,不利于大型设计和程序的可读性。若设计时需要实现某个输出的回读功能,可以通过增加中间信号作为缓冲,由该信号完成回读功能。双向端口Inout是四种端口类型中最为特殊的一种,最难以学习和掌握,为此专门提供一个

5、简单程序进行阐述,部分程序如下:...…①DataB<=DinwhenCE=’1’andRd=’0’else②(others=>’Z’);③Dout<=DataBwhenCE=’1’andRd=’1’else④(others=>’1’);学习参考好帮手WORD格式整理版……程序中DataB为双向端口,编程时应注意的是,当DataB作为输出且空闲时,必须将其设为高阻态挂起,即有类似第②行的语句,否则实现后会造成端口死锁。而当DataB作为有效输入时,DataB输出必须处于高阻态,对于该例子中即,当CE=’1’and

6、Rd=’1’时,输出DataB应处于高阻态。二.信号和变量常数、信号和变量是VHDL中最主要的对象,分别代表一定的物理意义。常数对应于数字电路中的电源或地;信号对应某条硬件连线;变量通常指临时数据的局部存储。信号和变量功能相近,用法上却有很大不同。信号变量赋值延迟至少有△延时无,立即变化相关信息有,可以形成波形无,只有当前值进程敏感是否全局性具有全局性,可存在于多个进程中只能在某个进程或子程序中有效相互赋值关系信号不能给变量赋值变量可以给信号赋值表1信号与变量主要区别对于变量赋值操作无延迟,初学者认为这个特性对V

7、HDL设计非常有利,但这只是理论上的。基于以下几点原因,我们建议,编程时还是应以信号为主,尽量减少变量的使用。(1)变量赋值无延时是针对进程运行而言的,只是一个理想值,对于变量的操作往往被综合成为组合逻辑的形式,而硬件上的组合逻辑必然存在输入到输出延时。当进程内关于变量的操作越多,其组合逻辑就会变得越大越复杂。假设在一个进程内,有关于变量的3个级连操作,其输出延时分别为5ns,6ns,7ns,则其最快的时钟只能达到18ns。相反,采用信号编程,在时钟控制下,往往综合成触发器的形式,特别是对于FPGA芯片而言,具有

8、丰富的触发器结构,易形成流水作业,其时钟频率只受控于延时最大的那一级,而不会与变量一样层层累积。假设某个设计为3级流水作业,其每一级延时分别为10ns,11ns,12ns,则其最快时钟可达12ns。因此,采用信号反而更能提高设计的速度。(2)由于变量不具备信息的相关性,只有当前值,因此也无法在仿真时观察其波形和状态改变情况,无法对设计的运行情况有效验证,而测试验证工作量往

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。