VHDL编程的一些心得体会(初学者必看)
VHDL编程的一些心得体会(共五则)
VHDL编程的一些心得体会(共五则)
第一篇:VHDL 编程的一些心得体会
VHDL 是由美国国防部为描述电子电路所开发的一种语言,其全称为(Very High Speed Integrated Circuit)Hardware Description Language。与另外一门硬件描述语言 Verilog HDL 相比,VHDL 更善于描述高层的一些设计,包括系统级(算法、数据通路、控制)和行为级(寄存器传输级),而且VHDL 具有设计重用、大型设计能力、可读性强、易于编译等优点逐渐受到硬件设计者的青睐。但是,VHDL 是一门语法相当严格的语言,易学性差,特别是对于刚开始接触VHDL 的设计者而言,经常会因某些小细节处理不当导致综合无法通过。为此本文就其中一些比较典型的问题展开探讨,希望对初学者有所帮助,提高学习进度。
一.关于端口
VHDL 共定义了5 种类型的端口,分别是In, Out,Inout, Buffer 及 Linkage,实际设计时只会用到前四种。In 和 Out 端口的使用相对简单。这里,我们主要讲述关于 buffer和inout 使用时的注意事项。
与 Out 端口比,Buffer 端口具有回读功能,也即内部反馈,但在设计时最好不要使用 buffer,因为 buffer类型的端口不能连接到其他类型的端口上,无法把包含该类型端口的设计作为子模块元件例化,不利于大型设计和程序的可读性。若设计时需要实现某个输出的回读功能,可以通过增加中间信号作为缓冲,由该信号完成回读功能。
vhdl学习笔记
电子系统设计学习笔记
经过一个学期的数字逻辑电路实验以及电子系统设计学习,我对VHDL语言的知识从无到有,从少到多,其中要归因于多次试验以及设计时间。现将学习过程中得到的一些经验积累如下:
1、关于设计方法
可以将传统的自下而上方法和VHDL的至上而下方法综合。先使用maxplus的原理图设计功能画出原理图,进行波形仿真。再综合图中的各接口和原件进行行为描述。以一个时序脉冲与整形电路为例:
分析如下:
输入端:clk,prnclrn,ent,enp,ldn,其中使能端prn与清除段clrn在实验中不发挥作用,可省略。74161中的两个使能端和读取功能多余,也可以省略。
输出端:与图相同。
接线:三个计数器输出Q3,Q4,Q4b,Q5,,74641输出Q6,三周期输出Q7,Q8
图中包含五进制、四进制、三进制和二进制计数器各一
代码如下:
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY exp5tx IS
PORT(clk : IN STD_LOGIC;
CP1,CP2,CP3,CP4,CP5,CP6 : OUT STD_LOGIC;
Q3,Q4,Q4b,Q5,Q6,Q7,Q8 : BUFFER STD_LOGIC);//接线均使用buffer,方便调试,波形模拟成功后再改回signal END exp5tx;
ARCHITECTURE DISTRIBUTER OF exp5tx IS
BEGIN
PROCESS(clk,Q3,Q5)
VARIABLE count_5 : STD_LOGIC_VECTOR(2 DOWNTO 0);
一个新手的verilog学习经验分享
一个新手的verilog学习经验分享
来源:网络素材
我学verilog语言进行FPGA设计也就半年时间,很多的东西就是在网上学到的,现在想说说自己对使用verilog进行FPGA设计的一些体会,我水平不高,主要是为新手朋友们介绍自己的一点经验少走点弯路。
1、verilog语言
学习verilog最重要的不是语法,“因为10%的语法就能完成90%的工作”,verilog语言常用语言就是always@(),if~else,case,assign这几个了,不用去专研繁杂的语法,有些问题等你碰到了查查书就好了。这里推荐夏雨闻老师的《verilog数字系统设计教程》,一本很适合新手的好书。
2、硬件原则
虽然verilog语言很象c语言,但它和c语言还是有本质的区别的,因为verilog进行的是硬件设计,你写出来的东西是实实在在电路,所以要有数字电路的知识是肯定的。数字电路就是由时序电路(触发器)和组合逻辑电路(各种逻辑门)构成的,用verilog写的程序在FPGA实现就是触发器和逻辑门,所以最重要的就是“你对你写的语言生成的电路心中有数”,做到这一点你就不会有写出来的程序不能综合的麻烦,电路的冗余逻辑肯定也是最少的。还要注意一点就是verilog程序是并行的,不是象c那样是顺序执行的,这是因为fpga硬件可配置,可形成不同的任务单元同时工作;而单片机这种基于通用目的,硬件结构也固定了,它处理任务只能一件一件顺序的进行。
3、同步原则
在进行FPGA设计的时候,同步原则应该是最重要的原则之一了,因为异步电路的不可控性,很可能有毛刺产生,而在芯片内部的任何一点毛刺都会一级一级的传递下去,最终影响系统的稳定性。同步原则用一句话来总结就是“不要试图产生自己的时钟”,最好一个设计或者一个模块只使用同一个时钟,这样所有的触发器都在同一个时钟沿跳变,当然最稳定了,系统也能跑到很高的速度。一个小技巧就是多使用触发器的使能端和取沿电路。
verilog编程心得
1 复位键(reset)的使用心得(1)复位键按一次,复位。(2)长按复位键置数。为了实现该功能,可使用不同的时钟信号。复位功能的时钟用50MHz,置数功能的时钟用1Hz。这样按一次时钟频率高的可立即复位,长按时钟频率低的可实现置数。2 关于,有用信号leap=1,是否需要让leap=0的问题。(1)如果是按键信号,按键没有按下时leap=1无用信号,按键按下时leap=0有用信号,不需要复位信号。因为它本身有恢复功能,无需手动设置。(2)如果是自己设置的中间变量信号leap=1有效,用完后必须手动把信号恢复至leap=0。因为它本身没有恢复功能,必须手动设置。3 在一个Verilog文件中,不可以在两个always模块中同时操作一个变量。4 数码管闪烁(1)让p与原数据按位或。(2)p=4'b0000,显示原数据;p=4'b0000,数码管熄灭(3)每个0.5s,让p=~p。这样数码管就会亮0.5s,灭0.5s。出现闪烁现象。5 对于一些取值不能为0的变量,如year,month等,应该赋给初始值,以免显示出错。6 对于reset这样的点击键应该写成点击形式,加上消抖程序。不应该用连加,以避免出错。7 关于按键检测问题按键检测时要检测高电平,因为如果检测低电平,该表示按键的变量默认是0,则等于按键已经被按下了,如果检测高电平则不会出现这种情况啊。(硬件电路不是检测高电平,要通过软件编程,转化成检测高电平)。8 怎么获得一个变量,某时刻和该时刻之前的变量?用非阻塞语句实现该功能。(1)一个时钟差always@(posedge clk)begindistance1<=distance;distance2<=distance1;if(distance2!=distance1)beginendend(2)多个时钟差always@(posedge clk)//KEY消抖begincount<=count+1'b1;if(count==500000)beginkey_reg1<=keyin;count1<=0;endkey_reg2<=key_reg1; keyout1<=key_reg2&(!key_reg1);//当扫描得到的两个信号不同时,说明按键按下则输出高电平电平脉冲end9 每一个verilog模块不能包含太多阻塞赋值语句,否则编译器会报错。尽可能多用非阻塞语句赋值。
vhdl编程的一些心得体会
vhdl编程的一些心得体会
篇一:VHDL学习心得
学习心得
——《EDA技术实用教程》
本学期对《EDA技术实用教程--VHDL版》的学习为我的专业知识学习打开了一个全新的窗口——微电子技术领域。对EDA技术,我更是有了全新的认识。
微电子技术的进步主要表现在大规模集成电路加工技术即半导体工艺技术的发展上,使得表征半导体工艺水平的线宽已经达到了纳米级。所以,集成电路设计正在不断地向超大规模、极低功耗和超高速的方向发展。
而现代电子设计技术的核心已日趋转向基于计算机的电子设计自动化技术,即EDA技术。EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。EDA技术使得设计者的工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现,这是电子设计技术的一个巨大进步。
EDA技术在进入21世纪后,得到了更大的发展。嵌入式
处理器软核的成熟,使得SOPC步入大规模应用阶段。电子技术领域全方位融入EDA技术,除了日益成熟的数字技术外,传统的电路系统设计建模理念发生了重大的变化。同时,EDA 使得电子领域各学科的界限更加模糊,更加互为包容。这些都利于设计人员利用EDA技术进行电子系统设计,如全定制或半定制ASIC设计,FPGA/CPLD开发应用和印制电路板。
从EDA技术的特点不难看出,相比于传统的数字电子系统或IC设计,EDA技术拥有独特的优势。在传统的数字电子系统或IC设计中,手工设计占了较大的比例。因此,也存在很多缺点。例如:复杂电路的设计、调试十分困难;由于无法进行硬件系统仿真,如果某一过程存在错误,查找和修改十分不便;设计过程中产生大量文档,不易管理;可移植性差等。相比之下,EDA技术有很大不同。它运用HDL对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证设计过程的正确性,可以大大降低设计成本,缩短设计周期。由于有各类库的支持,能够完成各种自动设计过程。它极大地简化了设计文档的管理,逻辑设计仿真测试技术也日益强大。
初学者学习Verilog HDL的步骤和经验技巧
初学者学习Verilog HDL的步骤和经验技巧
Verilog HDL是一种硬件描述语言(HDL:Hardware DiscripTIon Language),Verilog HDL语言是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
Verilog HDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design AutomaTIon公司(该公司于1989年被Cadence 公司收购)开发。两种HDL均为IEEE标准
Verilog HDL语言学习用途就是在最广泛的C语言的基础上发展起来的一种件描述语言,它是由GDA(Gateway Design AutomaTIon)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得VerilogHDL成为了该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995.Verilog HDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把Verilog HDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。与之相比,VHDL的学习要困难一些。但Verilog HDL较**的语法,也容易造成初学者犯一些错误,这一点要注意。
verilog学习笔记
学习Verilog HDL简谈
学习是一个慢长的过程不是一朝一夕的事情。我坚信自学是最好的老师。无论我们学什么都要有一个信心与奋斗目标。现在接合自己的真实的体会简谈一下学习Verilog HDL语言一些注意事项。希望对新上手学习Verilog HDL有一定的帮助。
我接触EDA设计主要是FPGA方面的。可以这样说对一个大专的学生来说是很难的从事这个方面的学习的。因为我们不仅要掌握硬件电路和软件设计知识而且还要拥有数字信号处理、系统分析、较强的高数知识。特别是在设计FPGA应用玩是无线通信领域时,对这方面的要求更高,此时我们也要掌握别一个数学工具软件就是矩形实验室软件(AMTLAB)的运用。而这些课程都是在本科高年级才开设的。如果我们想要从事这方面的设计就要慢慢的努力自学对与我一样的大专生来说。说到此就给大家推荐一个网址。在这个网站上有许多的教学视频,软件和文档资料都是免费的。比如说我们EDA所设计的软件知料几乎都可以找到在这个上面。
我是在学习VHDL和C语言后,接触这门语言的。说所以说,我就接合这三种语言来谈它们的基本区别思路。
我们在做任何系统设计时候,都要先学会硬件电路的规划。这里就不谈这个,我们常用的就是自己购买的实验开发板。如果自己做,有一点困难。主要是没有相关的设备。比如说我们学校吧,做PCB板就只可以做单面的。而EDA项目板都采用的是双层以上的板设计。如
果拿到工厂去就是很贵了,接下来就是焊接了,这方面也是一个难点,FPGA/CPLD/DSP这些元件的管脚都很多的。因此建议新手去买开发板。一个好的开发板就可以省去你做实验和开发项目许多的时间。我就说这样一个例子吧!上一学期,我们做实习项目就是一个多人抢答器。因为自己比较了解自己的实验板,所以说就按照自己硬件资源设计但是结果是程序很长,调试不方便。主要原因就是资源不足,不足就要想办法弥补。这就增加了困难和延长了时间。最后老师让我用学校的因资源充足所以代码也少许。最后只有我与另一个同学成功完成了这个项目的设计且实习老师打出了98分的高分。我说这个意思就是我们在做项目设计首先要规划好的硬件电路,我们编程出来的结果最终是在硬件电路上实现的。在那个时候,我们只能够修改程序来适应硬件电路。
VHDL课程设计心得体会
这次EDA课程设计虽然时间较短但是收获普丰,使得我对HDL语言的理解与应用能力得到了较大的提升,让我认识到只要深入学习,提升的空间永远是存在的。在本次课程设计中凸显了我的不足之处,比如软件运用不太熟练,对HDL 语言语法有诸多不清楚的认识,使在课程设计中遇到诸多困难。但是好在通过查阅资料和老师同学的帮助得以解决,使课程设计顺利完成。用HDL硬件描述语言的形式进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误。降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重的作用。但在设计过程中也遇到了一些问题和困难:
一、我自身的编程水平和软件水平需要提高,在本项目的设计过程中我遇到了很多问题,解决这些问题花费了我大量的时间,这反映出我对于Verilog语言的语法的理解依然不够。
二、在软件层面,QUARTUS的很多功能我依然不能熟练使用,这些功能非常强大软件功能我还没有熟练的掌握,这说明我仍然需要更多的学习。比如刚开始编程时总会出现一些无法理解的语法问题,最初设计时使用的VHDL语言,钻研了很久也没办法得到正确的仿真图,之后再改用的Verilog语言进行编写的,并成功得到正确波形。
三、语言和软件只是工具,设计思想才是至关重要的核心。
四、自上而下的开发过程要优于自下而上的开发过程,如果在项目中先去规划顶层中各个模块要实现的功能和接口的对接,再按照先前的规划去完成底层的开发是一种非常有效率的做法。
在本设计的过程中,我学习了Verilog语言的基本语法,熟悉了Quartus II 的HDL文本设计流程全过程,掌握了课题的的设计方法以及它的仿真和硬件测试。经过多次改进,本设计实现了课题要求的的基本功能,
vhdl学习笔记
电子系统设计学习笔记
经过一个学期的数字逻辑电路实验以及电子系统设计学习,我对VHDL语言的知识从无到有,从少到多,其中要归因于多次试验以及设计时间。现将学习过程中得到的一些经验积累如下:
1、关于设计方法
可以将传统的自下而上方法和VHDL的至上而下方法综合。先使用maxplus的原理图设计功能画出原理图,进行波形仿真。再综合图中的各接口和原件进行行为描述。以一个时序脉冲与整形电路为例:
分析如下:
输入端:clk,prnclrn,ent,enp,ldn,其中使能端prn与清除段clrn在实验中不发挥作用,可省略。74161中的两个使能端和读取功能多余,也可以省略。
输出端:与图相同。
接线:三个计数器输出Q3,Q4,Q4b,Q5,,74641输出Q6,三周期输出Q7,Q8
图中包含五进制、四进制、三进制和二进制计数器各一
代码如下:
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY exp5tx IS
PORT(clk : IN STD_LOGIC;
CP1,CP2,CP3,CP4,CP5,CP6 : OUT STD_LOGIC;
Q3,Q4,Q4b,Q5,Q6,Q7,Q8 : BUFFER STD_LOGIC);//接线均使用buffer,方便调试,波形模拟成功后再改回signal END exp5tx;
ARCHITECTURE DISTRIBUTER OF exp5tx IS
BEGIN
PROCESS(clk,Q3,Q5)
VARIABLE count_5 : STD_LOGIC_VECTOR(2 DOWNTO 0);
实训心得体会(通用6篇)
实训心得体会(通用6篇)
实训心得体会1
一周的实训已经过去了,我们在老师提供的实践平台上通过自己的实践学到了很多课本上学不到的宝贵东西,熟悉了对QuartusⅡ软件的一般项目的操作和学到了处理简单问题的基本方法,比如说实体、结构体的作用、保存的时候不能还有中文及文件名要和实体名相同等。加深了对VHDL编程语言的理解,尤其是本课题中乘法器的设计让我更清楚进程、变量、信号的使用及它们之间的区别。意识到了EDA课程设计的重要性以及团队合作对于设计的重要性,更重要的是掌握了VHDL语言的基本设计思路和方法,我想这些会对我今后的学习起到很大的助推作用。此外,还要在今后的课本理论知识学习过程中要一步一个脚印的扎实学习,灵活的掌握和运用专业理论知识这样才能在以后出去工作的实践过程中有所成果。
在此次实训的过程中,我了解到了要加强培养动手能力,要明白理论与实践结合的重要性,只有理论知识也是不够的,只有把理论知识和实践相结合,才能真正提高我们的实际动手能力与独立思考的能力。感谢学院给我们提供这次实训的机会,感谢瓮老师对我们的指导,他是为了教会我们如何运用所学的知识去解
决实际的问题,此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。
短暂的一周实训已经过去了,对于我来说这一周的实训赋予了我太多实用的东西了,不仅让我更深层次的对课本的理论知识深入了理解,而且还让我对分析事物的逻辑思维能力得到了锻炼,提高了实际动手能力,下面谈一下就这一周实训中我自己的一些心得体会。
vhdl初步设计知识点
vhdl初步设计知识点
VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述和模拟数字电路。在VHDL的初步设计阶段,掌握一些
基本的知识点非常重要。本文将介绍VHDL初步设计的几个关键知识点。
一、VHDL简介
VHDL是一种硬件描述语言,广泛应用于数字集成电路(ASIC)和可编程逻辑器件(FPGA)的设计过程中。它允许工程师使用代码来描
述数字电路的结构和行为,从而实现电路的仿真、综合和布局布线。
二、VHDL的基本结构
在VHDL中,一个完整的设计单元由实体(entity)、体系结构(architecture)和配置(configuration)组成。实体定义了电路的接口,体系结构定义了电路的内部行为,而配置描述了如何将实体和体系结
构相互关联。
三、实体和端口
实体是VHDL中的顶层设计单元,类似于一个模块。一个实体可以有多个输入输出端口,每个端口都有一个名称、数据类型和方向。使
用实体和端口的定义,可以将整个电路分解为更小的功能块,便于模
块化设计和复用。
四、信号和过程
在VHDL中,信号用于传递数据和状态。信号可以是标量(单个值)或矢量(多个值),可以是时序信号(在不同时间点上发生变化)或
组合信号(即时发生变化)。过程是一段可执行的代码,用于描述组
合逻辑的行为。
五、建立模块间连接
在VHDL设计中,模块之间的连接需要使用信号来完成。通过将一
个模块的输出信号连接到另一个模块的输入信号,实现了模块间的数
据传输。在设计阶段需要注意确保信号的方向和宽度匹配,以避免数
VHDL语言学习总结
VHDL语言学习总结
jackhuan@
(初学VHDL,欢迎批评指正)
1 VHDL的程序结构
一个VHDL程序包含实体entity、结构体architecture、配置configuration、包集package 和库library五部分。
实体,用于描述设计系统的外部接口信号;
结构体,用于描述系统的行为,系统数据的流程或系统组织结构形式;
实体+结构体=设计实体;
实体是设计实体的表层设计单元,其功能是对这个设计实体与外部的电路接口进行描述,它规定了设计单元的输入、输出接口信号和引脚,是设计实体与外界的一个通信界面;结构体是用于描述设计实体的内部结构以及实体端口间的逻辑关系,结构体具体实现一个实体。
一个电路系统的程序设计只有一个实体,可以有多个结构体。
在实体中类属说明放在端口说明上端,而其他说明类型说明如数据的定义说明则放在端口定义的下面。
配置一般用来为实体指定结构体,由于在设计中没有用到配置,故没有做深入研究。包集是库的一部分,用来存放库中具有类似功能或在某一个部件中使用的元件、函数或过程。库是一个设计中封装所有元器件的总和。
2 VHDL与C++的结构类比
上述部分可以和C++的工程管理方式做一简单比较。
C++中有类的声明部分(一般为.H文件)和实现部分(一般为.CPP文件)。在程序的编写过程中,我们首先在一个.H文件中将类的成员变量和成员函数做定义,然后在.CPP中使用具体的代码实现它。这样在应用这个类的其他程序代码中,一般在引用文件的开始加入如下语句:
#include “***.h” //***代表我们要包含的文件名称
vhdl心得体会
vhdl心得体会
VHDL是一种硬件描述语言,用于描述数字逻辑电路。我在学习VHDL过程中,有一些心得体会。
首先,学习VHDL需要有坚实的数字逻辑基础。VHDL是用
于描述数字电路的语言,因此理解数字逻辑的原理和基本概念是非常重要的。比如理解逻辑门、触发器、多路选择器等基本的数字逻辑元件的工作原理,才能够更好地用VHDL描述这
些元件。
其次,学习VHDL需要注重练习和实践。只是理论的学习是
远远不够的,需要通过实践来巩固和应用所学的知识。可以通过编写小的数字逻辑电路的VHDL代码来实践,比如实现一
个简单的加法器、乘法器或者计数器。通过不断地实践,可以更加熟悉VHDL的语法和规范,并且加深对数字逻辑的理解。
另外,在学习VHDL过程中,需要注重代码的规范和可读性。VHDL是一种结构化的语言,代码的结构和组织对于后期的维护和调试非常重要。可以通过使用合适的命名规范、缩进和注释来增加代码的可读性,避免出现混乱和不易理解的情况。
此外,掌握好VHDL的多种建模方法也是很重要的。VHDL
可以使用结构化建模、数据流建模或者行为建模等不同的方法来描述电路。对不同的电路和设计要求,选择合适的建模方法是关键。因此,需要深入理解这些建模方法的特点和使用场景,以便更好地应用在实际的设计中。
最后,理解VHDL中的一些高级特性和工具也是很有意义的。VHDL提供了很多高级特性,比如泛型、过程、状态机等,可以帮助我们更好地描述和优化数字逻辑电路。同时,VHDL还有一些支持工具,比如仿真工具、综合工具和布局工具等,可以帮助我们验证和优化设计。掌握这些高级特性和工具,可以提高设计的效率和准确性。
vhdl课程设计小结
vhdl课程设计小结
一、教学目标
通过本章的学习,学生应掌握VHDL(Very High Speed Integrated Circuit Hardware Description Language)的基本语法、基本结构和基本用法,能够运用VHDL对简单的数字电路进行描述和仿真。具体来说,知识目标包括:
1.掌握VHDL的基本语法和规则。
2.理解VHDL的基本结构和组成。
3.熟悉VHDL的基本用法和操作。
技能目标包括:
1.能够编写简单的VHDL代码,对基本的逻辑门电路进行描述。
2.能够使用至少一种VHDL仿真工具,对编写出的代码进行仿真和测
试。
情感态度价值观目标包括:
1.培养学生对硬件描述语言的兴趣和好奇心。
2.培养学生独立思考、解决问题的能力。
二、教学内容
本章的教学内容主要包括VHDL的基本语法、基本结构和基本用法。具体安排如下:
1.介绍VHDL的基本语法,包括数据类型、信号声明、实体声明、架
构声明等。
2.讲解VHDL的基本结构,包括实体、端口、信号、进程等。
3.介绍VHDL的基本用法,包括逻辑门电路的描述、组合逻辑电路的
描述、时序逻辑电路的描述等。
4.结合实际案例,讲解如何使用VHDL对数字电路进行描述和仿真。
三、教学方法
为了提高学生的学习兴趣和主动性,本章将采用多种教学方法,包括讲授法、讨论法、案例分析法、实验法等。
1.讲授法:用于讲解VHDL的基本语法和基本结构。
2.讨论法:用于探讨VHDL的用法和实际应用问题。
3.案例分析法:通过分析实际案例,让学生掌握VHDL对数字电路的
描述和仿真。
VHDL键盘心得体会
课程设计一开始,老师先让我们熟悉了实验指导书上的实验一到实验六这六个实验,目的旨在于让我们熟悉课程设计的步骤以及相关的软硬件知识。
这六个实验相对来说比较简单,我与同学们基本上实现了仿真,只是我拿到的数据线有问题,实验的先前阶段我又没有发现这问题,所以一直没有实现仿真,后来问了下同学,才知道是数据线的问题,找到了症结所在,接下来的事就水到渠成了。
课程设计不可能不碰到一些问题比如:硬件的问题,软件的问题,程序的问题。我们这次课程设计使用的是新的设备,所以基本上没有出现硬件故障,只是有个别同学没有看设备的使用说明书,在做实验时碰到了一些操作问题,像什么数字信号模块的时钟没有选对啊,实验箱的电源没有插好啊等等。仿真软件也由于我们先前做了六个基本实验,碰到的问题也不到,哦,记起来了,有个问题困扰了我们很多同学,就是把实验箱与电脑连接的时候,发现实验箱与电脑无法正常的进行数据交换,我们很多同学开始都在想是不是实验箱坏了,后来发现是电脑没有找到硬件,经过扫描让电脑找到新的硬件后,问题也随之解决了。
碰到问题最多的是在编程的时候,众所周知,编写程序是项很枯燥无味的事,幸好我们有些例子程序,这样我们也不需要完全把程序编出来,只要编某个模块就行了,这次使用的实验箱上的接口有很多是共用一个端口,这给我们造成了很大的麻烦,要不是老师告诉使用动态扫描的方法,我们也许还不能实现这次课程设计的仿真。
我们可以通过按下外接键盘的按键,使实验箱上除了显示键盘的扫描码外播放音乐的基准音符,也可以通过12位LED灯的点亮数目来记录你按下了多少次按键。
实训心得体会范文(通用7篇)
实训心得体会范文(通用7篇)
实训心得体会1
一周的实训已经过去了,我们在老师提供的实践平台上通过自己的实践学到了很多课本上学不到的宝贵东西,熟悉了对QuartusⅡ软件的一般项目的操作和学到了处理简单问题的基本方法,比如说实体、结构体的作用、保存的时候不能还有中文及文件名要和实体名相同等。加深了对VHDL编程语言的理解,尤其是本课题中乘法器的设计让我更清楚进程、变量、信号的使用及它们之间的区别。意识到了EDA课程设计的重要性以及团队合作对于设计的重要性,更重要的是掌握了VHDL语言的基本设计思路和方法,我想这些会对我今后的学习起到很大的助推作用。此外,还要在今后的课本理论知识学习过程中要一步一个脚印的扎实学习,灵活的掌握和运用专业理论知识这样才能在以后出去工作的实践过程中有所成果。
在此次实训的过程中,我了解到了要加强培养动手能力,要明白理论与实践结合的重要性,只有理论知识也是不够的,只有把理论知识和实践相结合,才能真正提高我们的实际动手能力与独立思考的能力。感谢学院给我们提供这次实训的机会,感谢瓮老师对我们的指导,他是为了教会我们如何运用所学的知识去解
决实际的问题,此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。
短暂的一周实训已经过去了,对于我来说这一周的实训赋予了我太多实用的东西了,不仅让我更深层次的对课本的理论知识深入了理解,而且还让我对分析事物的逻辑思维能力得到了锻炼,提高了实际动手能力,下面谈一下就这一周实训中我自己的一些心得体会。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VHDL编程的一些心得体会
VHDL是由美国国防部为描述电子电路所开发的一种语言,其全称为(Very High Speed Integrated Circuit) Hardware Description Language。与另外一门硬件描述语言Verilog HDL相比,VHDL更善于描述高层的一些设计,包括系统级(算法、数据通路、控制)和行为级(寄存器传输级),而且VHDL具有设计重用、大型设计能力、可读性强、易于编译等优点逐渐受到硬件设计者的青睐。但是,VHDL是一门语法相当严格的语言,易学性差,特别是对于刚开始接触VHDL的设计者而言,经常会因某些小细节处理不当导致综合无法通过。为此本文就其中一些比较典型的问题展开探讨,希望对初学者有所帮助,提高学习进度。
一.关于端口
VHDL共定义了5种类型的端口,分别是In, Out,Inout, Buffer及Linkage,实际设计时只会用到前四种。In和Out 端口的使用相对简单。这里,我们主要讲述关于buffer和inout使用时的注意事项。
inout和buffer区别
INOUT为输入输出双向端口,即从端口内部看,可以对端口进行赋值,即输出数据。也可以从此端口读入数据,即输入;
BUFFER为缓冲端口,功能与INOUT类似,区别在于当需要读入数据时,只允许内部回读内部产生的输出信号,即反馈。举个例子,设计一个计数器的时候可以将输出的计数信号定义为BUFFER,这样回读输出信号可以做下一计数值的初始值。
buffer顾名思义就是缓存,它是作为输出使用的,因为在模块内,是不可以将输出赋值给其他信号的,例如定义b: out std_logic;我们现在要将b赋值给信号a,就会出错,但是如果b的类型为buffer就可以执行操作;
inout是双向端口,即可以作为输入也可以作为输出,跟buffer的作用完全不同,要注意的是inout 类型的数据在不作为输入使用时必须被置为高阻“Z”状态,否则它作为输出的功能将不能正确执行。
与Out端口比,Buffer端口具有回读功能,也即内部反馈,但在设计时最好不要使用buffer,因为buffer类型的端口不能连接到其他类型的端口上,无法把包含该类型端口的设计作为子模块元件例化,不利于大型设计和程序的可读性。若设计时需要实现某个输出的回读功能,可以通过增加中间信号作为缓冲,由该信号完成回读功能。
双向端口Inout是四种端口类型中最为特殊的一种,最难以学习和掌握,为此专门提供一个简单程序进行阐述,部分程序如下:
... …
①DataB<=Din when CE=’1’ and Rd=’0’ else
②(others=>’Z’);
③Dout<=DataB when CE=’1’ and Rd=’1’ else
④( others=>’1’ );
… …
程序中DataB为双向端口,编程时应注意的是,当DataB作为输出且空闲时,必须将其设为高阻态挂起,即有类似第②行的语句,否则实现后会造成端口死锁。而当DataB作为有效输入时,DataB输出必须处于高阻态,对于该例子中即,当CE=’1’ and Rd=’1’时,输出DataB应处于高阻态。
二.信号和变量
常数、信号和变量是VHDL中最主要的对象,分别代表一定的物理意义。常数对应于数字电路中的电源或地;信号对应某条硬件连线;变量通常指临时数据的局部存储。信号和变量功能相近,用法上却有很大不同。
表1 信号与变量主要区别
对于变量赋值操作无延迟,初学者认为这个特性对VHDL设计非常有利,但这只是理论上的。基于以下几点原因,我们建议,编程时还是应以信号为主,尽量减少变量的使用。
(1)变量赋值无延时是针对进程运行而言的,只是一个理想值,对于变量的操作往往被综合成为组合逻辑的形式,而硬件上的组合逻辑必然存在输入到输出延时。当进程内关于变量的操作越多,其组合逻辑就会变得越大越复杂。假设在一个进程内,有关于变量的3个级连操作,其输出延时分别为5ns,6ns,7ns,则其最快的时钟只能达到18ns。相反,采用信号编程,在时钟控制下,往往综合成触发器的形式,特别是对于FPGA芯片而言,具有丰富的触发器结构,易形成流水作业,其时钟频率只受控于延时最大的那一级,而不会与变量一样层层累积。假设某个设计为3级流水作业,其每一级延时分别为10ns,11ns,12ns,则其最快时钟可达12ns。因此,采用信号反而更能提高设计的速度。
(2)由于变量不具备信息的相关性,只有当前值,因此也无法在仿真时观察其波形和状态改变情况,无法对设计的运行情况有效验证,而测试验证工作量往往会占到整个设计70%~80%的工作量,采用信号则不会存在这类问题。
(3)变量有效范围只能局限在单个进程或子程序中,要想将其值带出与其余进程、子模块之间相互作用,必须借助信号,这在一定程度上会造成代码不够简洁,可读性下降等缺点。
当然,变量也具有其特殊的优点,特别是用来描述一些复杂的算法,如图像处理,多维数组变换等。
三.位(矢量)与逻辑(矢量)
bit或其矢量形式bit_vector只有’0’和’1’两种状态,数字电路中也只有’0’和’1’两种逻辑,因此会
给初学者一个误区,认为采用位(矢量)则足够设计之用,而不必像std_logic那样出现’X’,’U’,’W’各种状态,增加编程难度。但实际情况却并非如此,以一个最简单D型触发器设计为例
… …
①process(clk)
②begin
③if clk’event and clk=’1’ then
④Q<=D;
⑤end if;
⑥end process;
… …
实际中clk对数据端D的输入有一定的时间限制,即在clk上升沿附近(建立时间和保持时间之内),D必须保持稳定,否则Q输出会出现亚稳态。
当clk和D时序关系不满足时,由于bit只有’0’或’1’,系统只能随机的从’0’和’1’中给Q输出,这样的结果显然是不可信的;而采用std_logic类型,则时序仿真时会输出为一个’X’,提醒用户建立保持时间存在问题,应重新安排D和clk之间时序关系。
此外,对于双向总线设计(前面已提及)、FPGA/CPLD上电配置等问题,如果没有’Z’,’X’等状态,根本无法进行设计和有效验证。
四.关于进程
进程(Process)是VHDL中最为重要的部分,大部分设计都会用到Process结构,因此掌握Process的使用显得尤为重要。以下是初学和使用Process经常会出错的例子。
1. 多余时钟的引入
在设计时往往会遇到这种情况,需要对外部某个输入信号进行判断,当其出现上跳或下跳沿时,执行相应的操作,而该信号不像正常时钟那样具有固定占空比和周期,而是很随机,需要程序设计判断其上跳沿出现与否。这时,很容易写出如下程序:
①process(Ctl_a) -- Ctl_a即为该输入信号
②begin
③if Ctl_a’event and Ctl_a=’1’ then
④… … ; --执行相应操作
⑤end if ;
⑥end process;
由于出现第③行这类语句,综合工具自动默认Ctl_a为时钟,某些FPGA更会强行将该输入约束到时钟引脚上。而设计者的初衷只是想将其作为下位机的状态输入以进行判断。上面的程序容易造成多时钟现象,增加设计的难度。解决的办法可以如下,将Ctl_a增加一级状态Ctl_areg寄存,