VHDL体会

合集下载

VHDL实验报告

VHDL实验报告

VHDL实验报告《创新实验》实验报告—基于vhdl的编程和硬件实现一、实验目的1.2.3.4. 熟悉和掌握硬件描述语言vhdl的基本语法及编写;掌握软件xilinx ise 10.1的使用;熟悉sdz-6电子技术实验箱的使用;了解节拍脉冲发生器等基本电路的实现;5. 了解八位二进制计数器的功能与设计;6. 学习键盘和七段数码管显示的控制和设计。

二、实验内容1. xilinx ise 10.1软件的使用;2. 节拍脉冲发生器等基本电路的实现;3. 八位二进制计数器的实现4. 键盘扫描及显示的实现三、实验器材1、 pc机2、 sdz-6电子技术实验箱3、正负5v电源4、 i/o接口线四、软件的使用在安装xilinx10.1软件时,需要一个id号,其实这个id号是可以重复使用的,几个同学在官网注册后就可以共享id号了。

安装完成之后就可以使用这个软件编写相应的vhdl的程序。

1.新建工程file—>new project 弹出下面的对话框输入工程名后单击next。

然后根据本实验的实验箱进行以下设置。

以后的步骤一般都是单击next(有些资料上会介绍有些这些步骤的具体功能,但对于本实验不必用到),最后单击finish,完成新建一个工程。

在窗口的左边会出现刚刚新建的工程,如下: 2.新建一个vhdl的源文件。

在上图中,右击工程选择new source ,弹出如下对话框。

在对画框的左边选择vhdl module,输入文件的名字(改名字最好是你定义的实体的名字)。

单击next。

出现下面的对话框。

该对话框主要是对外部端口的编辑。

可以直接跳过,即单击next,在源文件上编辑端口。

然后在接下来的对话框中单击finish。

完成建立一个源文件。

窗口右边就会出现刚才编辑的源文件。

3.编写和编译代码将事先编好的代码复制到源文件里,然后保存文件。

选中左边的文件名,在窗体的左边出现如下编辑文档内容。

选择synthesize —xst—》check syntax,双击check syntax,开始编译源文件。

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类型的端口不能连接到其他类型的端口上,无法把包含该类型端口的设计作为子模块元件例化,不利于大型设计和程序的可读性。

若设计时需要实现某个输出的回读功能,可以通过增加中间信号作为缓冲,由该信号完成回读功能。

双向端口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 作为输出且空闲时,必须将其设为高阻态挂起,即有类似第②行的语句,否则实现后会造成端口死锁。

VHDL中信号与变量的教学体会

VHDL中信号与变量的教学体会

很难发现其 中的错误。所以, 如何使学生分清两者 , 并 正 确的使 用 , 成为 影 响 VHDL语 言教 学 的关键 问 题 之 一 。本 文 主要 介 绍 了如 何 分 辨 VHD L语 言 的
d sg i g u i g VH DL r o n e .Ba e n o r e p re p r h s p stv e i n n sn a ep itd s d o u x e i n e h t o i e n t i a e a o ii e e f c n V HDL t a h n n e i n n . fe to e c i g a d d sg i g
维普资讯
第2 8卷 第 3期 20 0 6年 6月
电气 电子 教 学 学 报 J OURNAL 0F EEE
V o . 8 NO 3 12 .
J r 0 6 uL2 0
VHDL 中信 号 与 变 量 的教 学体 会
杨 丹 , 树 林 张
d s nn u igtahn ei ig d r ec igVHDL poet ai c n e t a o t aao jcsi VHDL ae ie rt h n g n rjc.B sc o cps b u t bet d n r v nf s;te g i tep p r o u e nt e to e n taetedf rn eb t e o fs beVHDLo jcs s — h a e c ss h dt d mo srt h i ee c ewent c nu a l f o h me o f wo b t , i e g
分 清变 量与 信号 的 区别 , 采用 何 种 数 据 对 象 往 往 随
心所 至 , 虽然 有 时候 系 统也 能正 常运 转 , 但是 在 系统

vhdl心得体会

vhdl心得体会

vhdl心得体会经过这个学期的VHDL课程学习,我对VHDL有了较为深入的了解和体会。

以下是我对VHDL的心得体会:首先,VHDL是一种硬件描述语言,用于描述数字电路和系统的行为和结构。

相比传统的结构化硬件描述语言,如Verilog,VHDL更加强调功能的建模和层次化设计。

通过使用VHDL,我们可以以一种高级的、可抽象化的方式来描述电路和系统的功能,从而提高开发效率。

其次,学习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实验中的学习和实践经验,包括实验目的、实验过程、实验结果以及对VHDL的理解和展望。

一、实验目的VHDL实验的主要目的是让我们掌握VHDL语言的基本语法和使用方法,能够利用VHDL描述数字电路,并通过仿真和综合工具进行验证和实现。

通过这些实验,我们可以深入了解数字电路的原理和设计方法,提高我们的逻辑设计能力和工程实践能力。

二、实验过程在实验过程中,我们首先学习了VHDL的基本语法,包括实体声明、端口声明、信号声明等。

然后,我们通过实例学习了VHDL的建模方法,包括组合逻辑电路的建模和时序逻辑电路的建模。

在组合逻辑电路的建模中,我们学习了使用逻辑运算符和条件语句描述电路的功能;在时序逻辑电路的建模中,我们学习了使用过程语句和时钟信号描述电路的状态转换。

在学习了VHDL的基础知识后,我们开始进行实验设计。

我们选择了一个简单的数字电路,如4位加法器,来进行实验验证。

首先,我们通过VHDL语言描述了加法器的功能和结构,包括输入端口、输出端口和中间信号。

然后,我们使用仿真工具进行了功能仿真,验证了加法器的正确性。

接着,我们使用综合工具将VHDL代码综合成门级电路,并进行了时序仿真和时序优化,验证了加法器的时序正确性和性能。

三、实验结果通过实验,我们成功地实现了4位加法器的功能,并验证了其正确性和性能。

在功能仿真中,我们输入了不同的测试数据,观察了输出结果,发现加法器能够正确地进行加法运算,并得到了正确的结果。

在时序仿真中,我们观察了电路的时序行为,包括输入信号的变化、输出信号的响应和中间信号的传播延迟等,发现加法器能够在时序上满足要求,并且具有较好的性能。

vhdl中信号与变量的教学体会

vhdl中信号与变量的教学体会

vhdl中信号与变量的教学体会VHDL(电子设备自动化设计语言)是一种针对高端、复杂电子系统设计的硬件定义语言,它利用模块化的设计结构,使得电子设计师能够更轻松地创建、调试和管理复杂电子硬件系统。

而在VHDL中,信号和变量的概念被广泛使用。

它们是VHDL中的基本概念,无论在设计硬件系统时或者执行系统时,这些概念都起着至关重要的作用。

首先,在VHDL中,信号是一种可以携带信息的变量,它可以在不同的模块之间传递。

通常,VHDL中的信号用于实现硬件中的“计算”或“处理”操作,如硬件加法器、乘法器、移位器等。

此外,信号除了可以携带“数据”信息,还可以携带“控制”信息,如信号被测试或修改,VHDL中的控制结构就可以控制信号的传递和变换。

另一方面,VHDL中的变量概念更多的是属于软件程序的概念,它更多的用来表示硬件系统中的状态变量,如存储数据或状态信息,以及可以被访问的变量。

简单地说,在VHDL中,变量的主要功能是存储电路的内部状态,如存储数据,以及保存可以被其它模块调用的信息。

总而言之,不可否认,信号和变量在VHDL中具有重要作用。

除了信号可以传输信息,变量在可以存储数据和调用信息。

这两类概念应用于VHDL硬件系统的设计上,可以达到更精确、更有效的系统设计效果,从而实现高性能的硬件系统。

因此,在VHDL教学过程中,教师应该把这两类概念融入到教学之中,让学生充分理解和掌握VHDL 中信号与变量的作用,这样有助于培养学生的硬件系统设计能力,提高学生在VHDL设计上的熟练度。

另外,为了更好地让学生理解和掌握VHDL中信号与变量的概念,教师还可以给学生安排一些设计和编码的实践课。

学生通过参加实验课,可以更好地理解和掌握VHDL中信号与变量的概念,能够熟练地把硬件系统设计中的信号和变量应用到实际的设计中。

综上所述,信号和变量的概念在VHDL中扮演着重要的角色,它们不仅是VHDL教学过程中的基本概念,在VHDL设计硬件系统中也具有重要意义。

vhdl学习笔记

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 ISPORT(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 ISBEGINPROCESS(clk,Q3,Q5)VARIABLE count_5 : STD_LOGIC_VECTOR(2 DOWNTO 0);VARIABLE count_2 : STD_LOGIC;VARIABLE count_4 : STD_LOGIC_VECTOR(1 DOWNTO 0);VARIABLE count_3 : STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINIF(clk'EVENT AND clk='1')THENIF(count_5="000")THENcount_5 := "001";Q3 <= '1';ELSIF(count_5="001")THENcount_5 := "010";Q3 <= '0';ELSIF(count_5="010")THENcount_5 := "011";Q3 <= '0';ELSIF(count_5="011")THENcount_5 := "100";Q3 <= '0';ELSIF(count_5="100")THENcount_5 := "000";Q3 <= '0';END IF;END IF; //五进制计数器IF(Q3'EVENT AND Q3='1')THENIF(count_2='0')THENcount_2 := '1'; Q4 <= '1';Q4b <= '0';ELSIF(count_2='1')THENcount_2 := '0'; Q4 <= '0';Q4b <= '1';END IF;END IF; //二进制计数器IF(Q3'EVENT AND Q3='1')THENIF(count_4="00")THENcount_4 := "01";Q5 <= '1';ELSIF(count_4="01")THENcount_4 := "10";Q5 <= '1';ELSIF(count_4="10")THENcount_4 := "11";Q5 <= '0';ELSIF(count_4="11")THENcount_4 := "00";Q5 <= '0';END IF;END IF; //四进制计数器IF(Q5'EVENT AND Q5='1')THENIF(count_3="00")THENcount_3 := "01"; Q6 <= '1';Q7 <= '0';Q8 <= '0';ELSIF(count_3="01")THENcount_3 := "10"; Q6 <= '0';Q7 <= '1';Q8 <= '0';ELSIF(count_3="10")THENcount_3 := "00"; Q6 <= '0';Q7 <= '0';Q8 <= '1';END IF;END IF; //三进制计数器END PROCESS;CP1 <= Q4b AND Q5 AND Q6;CP2 <= Q4b AND NOT Q5 AND Q6;CP3 <= Q4b AND Q5 AND Q7;CP4 <= Q4b AND NOT Q5 AND Q7;CP5 <= Q4b AND Q5 AND Q8;CP6 <= Q4b AND NOT Q5 AND Q8;//组合逻辑END DISTRIBUTER;这是学习vhdl过程中的一个程序,其中还有些缺点,比如没将每个模块分成单独的process等。

VHDL语言与EDA课程设计心得【模版】

VHDL语言与EDA课程设计心得【模版】

湖南人文科技学院课程设计报告课程名称: VHDL语言与EDA课程设计设计题目:出租车自动计价器设计系别:专业:班级:学生姓名:学号:起止日期: 2011年6月13日~2011年6月26日指导教师:教研室主任:摘要随着我国社会经济的全面发展,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普遍的交通工具。

出租车计价器是出租车营运收费的专用智能化仪表,是出租车市场规范化、标准化以及减少司机与乘客之间发生纠纷的重要设备。

一种功能完备、简单易用、计量准确的出租车计价器是加强出租车行业管理、提高服务质量的必备品。

根据预定的设计要求和设计思路,我们使用VHDL硬件描述语言设计了一个实际的基于Altera FPGA芯片的出租车自动计价器系统,介绍了该系统的电路结构和程序设计。

通过在QuartusII6.0软件中编译和下载测试,得到了仿真波形和关键的设计结果。

经过在实验箱上进行硬件测试,证明该出租车计价系统具有实用出租车计价器的基本功能,如能进一步完善,将可以实用化和市场化。

关键词:出租车自动计价器;VHDL; FPGA ;QuartusII6.0目录设计要求 01、方案论证与对比 01.1方案一 01.2方案二 (1)1.3两种方案的对比 (2)2、实验步骤和设计过程 (2)2.1计程模块 (2)2.2等待计时模块 (2)2.3计费模块 (2)3、调试与操作说明 (3)3.1QuartusII中的VHDL程序 (3)3.2程序的编译与及仿真波形 (6)3.3程序的下载与功能的测试 (7)4、课程设计心得体会 (8)5、元器件及仪器设备明细 (9)6、参考文献 (10)7、致谢 (11)出租车自动计价器设计设计要求设计一个出租车自动计费器,具有行车里程计费、等候时间计费、及起价三部分,用四位数码管显示总金额,最大值为99.99元,行车里程单价1元/公里,等候时间单价0.5元/10分钟,起价3元(3公里起价)。

数字电路实验心得体会

数字电路实验心得体会

数字电路实验心得体会数字电路实验心得体会篇一:数电实验总结心得数字电子技术实验总结心得数字电子技术是一门理论与实践密切相关的学科,如果光靠理论,我们就会学的头疼,如果借助实验,效果就不一样了,特别是数字电子技术实验,能让我们自己去验证一下书上的理论,自己去设计,这有利于培养我们的实际设计能力和动手能力。

通过数字电子技术实验, 我们不仅仅是做了几个实验,不仅要学会实验技术,更应当掌握实验方法,即用实验检验理论的方法,寻求物理量之间相互关系的方法,寻求最佳方案的方法等等,掌握这些方法比做了几个实验更为重要。

在数字电子技术实验中,我们可以根据所给的实验仪器、实验原理和一些条件要求,设计实验方案、实验步骤,画出实验电路图,然后进行测量,得出结果。

在数字电子技术实验的过程中,我们也遇到了各种各样的问题,针对出现的问题我们会采取相应的措施去解决,比如:1、线路不通——运用逻辑笔去检查导线是否可用;2、芯片损坏——运用芯片检测仪器检测芯片是否正常可用以及它的类型;3、在一些实验中会使用到示波器,这就要求我们能够正确、熟悉地使用示波器,通过学习我们学会了如何调节仪器使波形便于观察,如何在示波器上读出相关参数,如在最后的考试实验《555时基电路及其应用》中,我们能够读出多谐振荡器的Tpl、Tph和单稳态触发器的暂态时间T,还有有时是因为接入线的问题,此时可以通过换用原装线来解决。

同时,我们也得到了不少经验教训:1、当实验过程中若遇到问题,不要盲目的把导线全部拆掉,然后又重新连接一遍,这样不但浪费时间,而且也无法达到锻炼我们动手动脑能力的目的。

此时,我们应该静下心来,冷静地分析问题的所在,有可能存在哪一环节,比如实验原理不正确,或是实验电路需要修正等等,只有这样我们的能力才能有所提高。

2、在实验过程中,要学会分工协作,不能一味的自己动手或是自己一点也不参与其中。

3、在实验过程中,要互相学习,学习优秀同学的方法和长处,同时也要学会虚心向指导老师请教,当然这要建立在自己独立思考过的基础上。

vhdl+inout

vhdl+inout

最近在用VHDL设计简易CPU,想用总线式的,这就要求端口模式必须是INOUT,之前没接触过。

在网上搜到了博主jiangyi_love的一篇文章,转载过来,我们大家共同学习。

在工程应用中,双向电路是设计者不得不面对的问题.在实际应用中,数据总线往往是双向的.如何正确处理数据总线是进行时序逻辑电路设计的基础.在程序设计过程中,关键技术在于:实体部分必须对端口属性进行申明,端口属性必须为inout 类型,在构造体需要对输出信号进行有条件的高阻控制.在双向电路的处理问题上,常用的处理方式有两种,在介绍双向电路的处理方式之前,先看看双向电路的基本格式:ENTITY bidir_pin IS(bidir : INOUT std_logic;oe, clk, from_core : IN std_logic;to_core : OUT std_logic;……END bidir_pin;ARCHITECTURE behavior OF bidir_pin ISBEGINbidir <= from_core WHEN oe=…1‟ ELSE “ZZZZ”;to_core <= bidir;END behavior;该程序揭示了双向电路的处理技巧,首先在实体部分bidir属于双向信号,在端口定义时,端口属性为inout类型,即把bidir信号作为输入三态输出. 语句“bidir <= from_core WHEN oe=…1‟ ELSE “ZZZZ”;”表示bidir信号三态输出,语句”to_core <= bidir;”把bidir信号作为输入信号.由此可见,双向电路在程序设计中,didir输入当着普通的in类型,而在输出时,需要加一定的控制条件,三态输出.问题的关键在于:如何确定这个条件?1)双向信号作一个信号的输入,作另一信号的输出ENTITY bidir ISPORT(bidir : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);oe, clk : IN STD_LOGIC;from_core : IN STD_LOGIC_VECTOR (7 DOWNTO 0);to_core : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END bidir;ARCHITECTURE logic OF bidir ISSIGNAL a : STD_LOGIC_VECTOR (7 DOWNTO 0);SIGNAL b : STD_LOGIC_VECTOR (7 DOWNTO 0);BEGINPROCESS (clk)BEGINIF clk = '1' AND clk'EVENT THENa <= from_core;to_core <= b;END IF;END PROCESS;PROCESS (oe, bidir)BEGINIF( oe = '0') THENbidir <= "ZZZZZZZZ";b <= bidir;ELSEbidir <= a;b <= bidir;END IF;END PROCESS;END logic;这种设计方式叫做寄存双向信号的方法.本设计中bidir为双向信号,from_core为数据输入端,to_core为数据输出端,oe为三态输出使能,clk为读写数据的时钟.在程序设计中,需要定义两个signal a和b信号.a信号用于输入数据from_core的寄存器,b用于输出数据to_core的寄存器.采用寄存器的方法需要设计两个进程,一个进程把a,b信号在时钟的控制下负责端口的输入信号from_core和端口输出信号to_core的连接,这一步实现了寄存双向的功能.另外一个进程则负责信号a,b和双向口之间的赋值关系.本设计只揭示了简单的双向信号操作方式,即bidir 既可以作为from_core的输出,又可以作为to_core的输入2)双向信号既做输出又做输出上例是最简单的双向信号应用的特例.在实际的工程中,双向信号既做信号的输入,又做信号的输出,常见的数据总线就是这种操作模式.library IEEE;use IEEE.STD_LOGIC_1164.all;entity dir_data isport(clk : in STD_LOGIC;rst : in STD_LOGIC;rw : in STD_LOGIC;address : in STD_LOGIC_VECTOR(1 downto 0);data : inout STD_LOGIC_VECTOR(7 downto 0));end dir_data;architecture arc_dir of dir_data issignal data_in : STD_LOGIC_VECTOR(7 downto 0);signal data_out: STD_LOGIC_VECTOR(7 downto 0);signal reg_a: STD_LOGIC_VECTOR(7 downto 0);signal reg_b: STD_LOGIC_VECTOR(7 downto 0);begindata_in<=data;d1:process(clk,rst,rw)beginif rst='1' thenreg_a<= (others=>'0');reg_b<= (others=>'0');elsif clk'event and clk='1' then if rw='1' thenif address="00" thenreg_a<=data_in;elsif address="01" thenreg_b<=data_in;else null;end if;else null;end if;else null;end if;end process d1;d2:process(clk,rw,reg_a,reg_b) beginif clk'event and clk='1' thenif rw='0' thenif address="00" thendata_out<=reg_a;elsif address="01" thendata_out<=reg_b;else null;end if;else null;end if;else null;end if;end process d2;data<=data_out when (rw='0' and address(1)='0') else(others=>'Z');end arc_dir;针对这个程序,我编了一个仿真波形,仅供参考!在程序设计中,首先需要定义data_in, data_out, reg_a, reg_b四个signal,我们把data_in叫做输入寄存器,它是从双向信号data接收数据的寄存器,data_out叫做输出寄存器,它是向双向信号data发送信号的寄存器,reg_a和reg_b叫做操作寄存器,它们是在一定的时序控制下把data_in数据送给reg_a,reg_b,在一定的时序控制下从reg_a和reg_b读出数据的.这样的处理方式必须有两个进程,因为在architecture arc_dir of dir_data is和begin之间定义了data_in, data_out, reg_a, reg_b四个signal,它在同一进程内不支持既赋值,又调用,也就是说它不支持在d1进程中对信号reg_a, reg_b赋值,又在d1进程中又调用reg_a, reg_b.首先有语句”data_in<=data;”它表示输入寄存器无条件的接收双先信号的数据.在d1进程中,首先在rst信号有效时,对操作寄存器reg_a,和reg_b进行清零操作,然后在时钟(clk)的控制下,在写(rw)信号有效的情况下,对reg_a, reg_b寄存器在不同的地址控制下写入不同的data_in值.在d2进程中,在时钟(clk)的控制下,在读(rw)信号有效的时候,把不同地址的reg_a, reg_b的值送进data_out中.最关键的是最后一句:“data<=data_out when (rw='0' and address(1)='0') else (others=>'Z');”它表示双向信号的三态输出,而最最关键的是when后面的条件,如果条件限制太宽,就会错误占用双向信号总线,引起总线的误操作,如果条件限制太窄,输出寄存器的数据就不能够正确的送到数据总线上去,会引起数据的丢失.也就是说,只有正确的限制了when语句后面的条件,才能够把输出寄存器的数据正确地送到数据总线上去.仔细查看此条件,有如下的规律:when语句后的条件是操作寄存器写入输出寄存器的条件的公共条件.如:rw=‟0‟是操作寄存器的数据写入输出寄存器的读使能信号,address(1)是地址线的公共部分.在实际工程应用中,需要设计者在分配地址总线的时候掌握一定的技巧,尽量从地址的低位到到高位,保证地址总线有更多位的公共部分,比如只对四个寄存器操作时,地址线分配为”100”,”010”,”110”,”001”是不科学的,而”000”,”001”,”010”和”011”则是理想的.两者不同的是前者地址线没有公共部分,这样的设计无法用when语句对条件进行直接的控制,如果置之不理,由于列举不全,在逻辑综合时,电路会利用器件的乘积项和查找表的资源形成一个Latch, Latch不仅会把电路的时序变得复杂,而且电路存在潜在的危险性.虽然when语句后的条件不能够对条件进行直接的控制,但是可以使用枚举法一一把用到的地址线罗列出来,表示只有在这样的地址线的情况下才会用到数据总线,否则其他状态对数据总线送高阻,表示不占用数据总线. 总而言之,双向信号是程序设计中尤其重要的基础,设计者在设计程序的时候,要尤其注意,何时会占用数据总线,何时不占用数据总线。

VHDL课程设计心得体会

VHDL课程设计心得体会

这次EDA课程设计虽然时间较短但是收获普丰,使得我对HDL语言的理解与应用能力得到了较大的提升,让我认识到只要深入学习,提升的空间永远是存在的。

在本次课程设计中凸显了我的不足之处,比如软件运用不太熟练,对HDL 语言语法有诸多不清楚的认识,使在课程设计中遇到诸多困难。

但是好在通过查阅资料和老师同学的帮助得以解决,使课程设计顺利完成。

用HDL硬件描述语言的形式进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误。

降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重的作用。

但在设计过程中也遇到了一些问题和困难:一、我自身的编程水平和软件水平需要提高,在本项目的设计过程中我遇到了很多问题,解决这些问题花费了我大量的时间,这反映出我对于Verilog语言的语法的理解依然不够。

二、在软件层面,QUARTUS的很多功能我依然不能熟练使用,这些功能非常强大软件功能我还没有熟练的掌握,这说明我仍然需要更多的学习。

比如刚开始编程时总会出现一些无法理解的语法问题,最初设计时使用的VHDL语言,钻研了很久也没办法得到正确的仿真图,之后再改用的Verilog语言进行编写的,并成功得到正确波形。

三、语言和软件只是工具,设计思想才是至关重要的核心。

四、自上而下的开发过程要优于自下而上的开发过程,如果在项目中先去规划顶层中各个模块要实现的功能和接口的对接,再按照先前的规划去完成底层的开发是一种非常有效率的做法。

在本设计的过程中,我学习了Verilog语言的基本语法,熟悉了Quartus II 的HDL文本设计流程全过程,掌握了课题的的设计方法以及它的仿真和硬件测试。

经过多次改进,本设计实现了课题要求的的基本功能,但由于开发板的逻辑单元有限,一些功能没法实现,这些都是需要完善的地方。

在实验箱上可以实现一些基本的功能,由于实验箱的管脚不够的原因只能实现部分的功能。

该系统离实际使用也还有相当的距离,需要我进行不断地补充和完善。

实训心得体会(通用6篇)

实训心得体会(通用6篇)

实训心得体会(通用6篇)实训心得体会1一周的实训已经过去了,我们在老师提供的实践平台上通过自己的实践学到了很多课本上学不到的宝贵东西,熟悉了对QuartusⅡ软件的一般项目的操作和学到了处理简单问题的基本方法,比如说实体、结构体的作用、保存的时候不能还有中文及文件名要和实体名相同等。

加深了对VHDL编程语言的理解,尤其是本课题中乘法器的设计让我更清楚进程、变量、信号的使用及它们之间的区别。

意识到了EDA课程设计的重要性以及团队合作对于设计的重要性,更重要的是掌握了VHDL语言的基本设计思路和方法,我想这些会对我今后的学习起到很大的助推作用。

此外,还要在今后的课本理论知识学习过程中要一步一个脚印的扎实学习,灵活的掌握和运用专业理论知识这样才能在以后出去工作的实践过程中有所成果。

在此次实训的过程中,我了解到了要加强培养动手能力,要明白理论与实践结合的重要性,只有理论知识也是不够的,只有把理论知识和实践相结合,才能真正提高我们的实际动手能力与独立思考的能力。

感谢学院给我们提供这次实训的机会,感谢瓮老师对我们的指导,他是为了教会我们如何运用所学的知识去解决实际的问题,此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。

短暂的一周实训已经过去了,对于我来说这一周的实训赋予了我太多实用的东西了,不仅让我更深层次的对课本的理论知识深入了理解,而且还让我对分析事物的逻辑思维能力得到了锻炼,提高了实际动手能力,下面谈一下就这一周实训中我自己的一些心得体会。

实训心得体会2在学校领导的高度重视下,我们数控车工和普车实训取得了良好的成绩,使学生学习了数控车编程和普车理论知识,同时大大提高了实际操作能力,增强学生的安全文明生产的意识和企业意识。

实训期间我们的实训指导工作是以“安全第一”为思想教育指导,严格要求我们的学生要注意安全问题,要严格遵守车间市场的规章制度。

实训心得体会800字(精选19篇)

实训心得体会800字(精选19篇)

实训心得体会800字(精选19篇)实训心得体会800字(精选19篇)当我们经过反思,对生活有了新的看法时,有这样的时机,要好好记录下来,这样能够培养人思考的习惯。

那么问题来了,应该如何写心得体会呢?以下是小编精心整理的实训心得体会800字,仅供参考,希望能够帮助到大家。

实训心得体会篇1通过这两堂实训课我有了很多体会,刚开始学习时也确实遇到了很多困难。

但是经过老师的指导和同学的帮助之后,我也渐渐点钞变得熟练起来了。

以前每次到银行办业务,看到人家快速又准确的点钞我总羡慕不以。

当时就想我也能点这么快就好了,因为在实际操作中为客户办理业务,点钞的快慢及准确度直接影响到客户对你个人甚至整个单位形象的看法。

在学习会计电算化的我们,不管是选择出纳,会计,还是选择财务管理,都会与钱相接触,不少公司的专业技能考核都会是一些简单的东西,比如一些会计实务,珠算,电脑,点钞等,在学过点钞的我们,如果参加专业技能考核会为自己增加更多砝码,不少人在上课时觉得学校开这门课就是“闹眼子”,他们认为现在科技是如此的发达,点钞除了在银行中会使用外,其他的地方基本上不会用到,我认为虽然现在科技很发达,但在不少人家中完全不会配备点钞机这种机器,或者再交学费,保险,买房等时候都会用到大量的现金,我们只有学会点钞这门技术,才能为自己在不必要的地方减少麻烦。

通过这门实训课,我仅仅还只是学到了会计这个岗位中的一小部份,真正要学的还有很多很多,经过这次实训,要我更加深刻的明白,知识是在平时积累的,只有每天不断的充实自己才能在遇到问题的时候得到解决,就像这次的实训,就是因为平时没积累知识,导致在这一系列的练习中不顺利,不过没关系,在剩下不多的在校期间,我会更加努力的学好知识。

学校开这门实训可是为了让我们对平时学习的理论知识与实际操作相结合,在理论和实训教学基础上进一步巩固已学基本理论及应用知识并加以综合提高,学会将知识应用于实际的方法,提高分析和解决问题的能力。

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对数字电路的描述和仿真。

4.实验法:让学生动手编写VHDL代码,使用仿真工具进行仿真,巩固所学知识。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:《VHDL Primer》(第五版),作者:Peter Flake。

2.参考书:《数字电路设计与VHDL应用》。

3.多媒体资料:VHDL教程视频、实际案例视频等。

vhdl心得体会

vhdl心得体会

vhdl心得体会VHDL是一种硬件描述语言,用于描述数字逻辑电路。

我在学习VHDL过程中,有一些心得体会。

首先,学习VHDL需要有坚实的数字逻辑基础。

VHDL是用于描述数字电路的语言,因此理解数字逻辑的原理和基本概念是非常重要的。

比如理解逻辑门、触发器、多路选择器等基本的数字逻辑元件的工作原理,才能够更好地用VHDL描述这些元件。

其次,学习VHDL需要注重练习和实践。

只是理论的学习是远远不够的,需要通过实践来巩固和应用所学的知识。

可以通过编写小的数字逻辑电路的VHDL代码来实践,比如实现一个简单的加法器、乘法器或者计数器。

通过不断地实践,可以更加熟悉VHDL的语法和规范,并且加深对数字逻辑的理解。

另外,在学习VHDL过程中,需要注重代码的规范和可读性。

VHDL是一种结构化的语言,代码的结构和组织对于后期的维护和调试非常重要。

可以通过使用合适的命名规范、缩进和注释来增加代码的可读性,避免出现混乱和不易理解的情况。

此外,掌握好VHDL的多种建模方法也是很重要的。

VHDL可以使用结构化建模、数据流建模或者行为建模等不同的方法来描述电路。

对不同的电路和设计要求,选择合适的建模方法是关键。

因此,需要深入理解这些建模方法的特点和使用场景,以便更好地应用在实际的设计中。

最后,理解VHDL中的一些高级特性和工具也是很有意义的。

VHDL提供了很多高级特性,比如泛型、过程、状态机等,可以帮助我们更好地描述和优化数字逻辑电路。

同时,VHDL还有一些支持工具,比如仿真工具、综合工具和布局工具等,可以帮助我们验证和优化设计。

掌握这些高级特性和工具,可以提高设计的效率和准确性。

综上所述,学习VHDL需要有坚实的数字逻辑基础,注重实践和练习,注重代码规范和可读性,掌握多种建模方法,了解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有类似之处。

首先我们编写了*.VHD文件,内有实体entity和结构体architecture,开始还要引入库library和包package。

在我们使用其他元件时,通常在architecture中做元件例化。

例如要在myexp中例化元件myand,则:Architecture behave of myexp isSignal mysig1 : bit_vector(7 downto 0);…component myandport( din1: in bit;din2: in bit;dout:out bit);end component;begin…p1: myand port map(din1,din2,dout);…end behave;实际上元件例化就是对元件的包含,相当于在C++中#include的功能。

(VHDL实验报告)一位半加器,全加器的设计

(VHDL实验报告)一位半加器,全加器的设计
全加器的设计采用“元件例化语句”,故需建立两个VHDL文 本编辑对话框(一个顶层文件,一个底层文件)。在相应的编辑框中 输入相应的VHDL语句,再分别以各自的实体名进行保存。注意的是顶 层文件名应必须与工程名一致。此次实验底层文件为半加器VHDL语句 ,顶层文件为全加器VHDL语句,其语句分别如下两图所示:
3)对文本文件进行编译。选择processing-compiler tool--start或直接点快捷栏上的三角形则会出 现编译器窗口。需要说明的是在进行设计文件的综合和分 析,也可以单独打开某个分析综 合过程不必进行全编译 界面。当完成上述窗口的设定后,点击 START 按钮进行 设计文件的全编译。如果文件有错,在软件的下方则会提 示错误的原因和位置,以便于使用者进行修改直到设计文 件无错。整个编译完成,软件会提示编译成功。
二)全加器
本次实验我分别用实验箱上的开关K1、K2、K3作为全加器的三输入A、B、Ci-1
;分别用LED彩灯LED1、LED2作为半加器的两个输出端Si、Ci。实验时将实验箱的拨动
开关拨向下时为低电平“0”。拨向上时为高电平“1”,LED高电平时灯亮,低电平时
灯灭。以下第一幅图即为输入为“111”时输出为“11”;第二幅图则是当输入为
A
9
五、实验步骤
(一)半加器的设计
4、对设计文件进行仿真
1)选择File--New,在弹出的对话框中选择Vector Waveform File,点击OK按钮,打开进入一个空的波形编辑器窗口。
2)设置仿真结束时间,波形编辑器默认的仿真结束时间为 1µS ,根据仿真需要,可以自由设置仿真的结束时间(本次设置的为1ms )。选择 QUARTUSII 软件的 Edit--End Time命令,弹出线路束时间 对话框,在 Time框办输入仿真结束时间,点击OK按钮完成设置。如 下图所示:

VHDL键盘心得体会

VHDL键盘心得体会

课程设计一开始,老师先让我们熟悉了实验指导书上的实验一到实验六这六个实验,目的旨在于让我们熟悉课程设计的步骤以及相关的软硬件知识。

这六个实验相对来说比较简单,我与同学们基本上实现了仿真,只是我拿到的数据线有问题,实验的先前阶段我又没有发现这问题,所以一直没有实现仿真,后来问了下同学,才知道是数据线的问题,找到了症结所在,接下来的事就水到渠成了。

课程设计不可能不碰到一些问题比如:硬件的问题,软件的问题,程序的问题。

我们这次课程设计使用的是新的设备,所以基本上没有出现硬件故障,只是有个别同学没有看设备的使用说明书,在做实验时碰到了一些操作问题,像什么数字信号模块的时钟没有选对啊,实验箱的电源没有插好啊等等。

仿真软件也由于我们先前做了六个基本实验,碰到的问题也不到,哦,记起来了,有个问题困扰了我们很多同学,就是把实验箱与电脑连接的时候,发现实验箱与电脑无法正常的进行数据交换,我们很多同学开始都在想是不是实验箱坏了,后来发现是电脑没有找到硬件,经过扫描让电脑找到新的硬件后,问题也随之解决了。

碰到问题最多的是在编程的时候,众所周知,编写程序是项很枯燥无味的事,幸好我们有些例子程序,这样我们也不需要完全把程序编出来,只要编某个模块就行了,这次使用的实验箱上的接口有很多是共用一个端口,这给我们造成了很大的麻烦,要不是老师告诉使用动态扫描的方法,我们也许还不能实现这次课程设计的仿真。

我们可以通过按下外接键盘的按键,使实验箱上除了显示键盘的扫描码外播放音乐的基准音符,也可以通过12位LED灯的点亮数目来记录你按下了多少次按键。

设计之初,我对EDA知识的掌握应该说是还没入门,随着设计的深入,碰到了一系列的问题,为了实现仿真,我们就不得不去解决这一系列的问题,这样在解决问题的过程中我们不知不觉的就对EDA知识有了更深的了解,同时也巩固了以前的知识。

通过编程,我发现VHDL语言跟C语言、汇编语言在某些方面是相通的,所以无形之中我也对计算机语言有了更深的认识。

vhdl实验报告_16乘16点阵_字选

vhdl实验报告_16乘16点阵_字选

综合实践总结报告综合实践名称: EDA技术与实践综合实践地点、时间题目功能分析和设计实验的要求有如下三点:1.用16*16点阵的发光二极管显示字符;2.可显示字符为0~9的数字字符与A~F英文字母的大写;3.输入为四位二进制矢量;按照要求可知,LED点阵模块,共由16×16=256个LED发光二极管组成,如何在该点阵模块上显示数字和字母是本实验的关键。

先将要显示的每一幅图像画在一个16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布以数字8为例,点阵分布为:0000000000000000000000000000000000011111111110000001111111111000000110000001100000011000000110000001100000011000000111111111100000011111111110000001100000011000000110000001100000011000000110000001111111111000000111111111100000000000000000000000000000000000考虑到实际物理实验平台上点阵发光二极管的原理,以下为16×16点阵LED外观图,只要其对应的X、Y轴顺向偏压,即可使LED 发亮。

例如如果想使左上角LED点亮,则Y0=1,X0=0即可。

所以我采用行列扫描的方法,用四位二进制数做列选信号(总共16列),如选中第一列,则扫描第一列之中哪些行是高电平(1),哪些行是低电平(0);为高电平的则点亮,为低电平的不亮。

(列信号都接地)。

如此,列选信号由“0000”变到“1111”时,16列扫描完毕,一个字也就出来了,列选信号重新由“0000”开始扫描。

注意扫描频率必须要足够快,才能保证显示一个数字或字母时所有灯在肉眼看来是同时在闪烁的。

vhdl编程的一些心得体会

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对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证设计过程的正确性,可以大大降低设计成本,缩短设计周期。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学习心得——《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对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证设计过程的正确性,可以大大降低设计成本,缩短设计周期。

由于有各类库的支持,能够完成各种自动设计过程。

它极大地简化了设计文档的管理,逻辑设计仿真测试技术也日益强大。

vhdl在现在的eda设计中使用最多,也拥有几乎所有主流eda工具的支持。

vhdl作为一个规范语言和建模语言,不仅可以作为系统模拟的建模工具,而且可以作为电路系统的设计工具,可以利用软件工具将vhdl源码自动地转化为文本方式表达的基本逻辑元件连接图,即网表文件。

这种方法显然对于电路自动设计是一个极大的推进。

它具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。

eda技术良好的可移植性与可测试性,将所有设计环节纳入统一的自顶向下的设计方案中。

它不但在整个设计流程上充分利用计算机的自动设计能力、在各个设计层次上利用计算机完成不同内容的仿真模拟,而且在系统板设计结束后仍可利用计算机对硬件系统进行完整的测试。

书中通过大量的图示对pld硬件特性与编程技术进行了形象的讲解,不仅融合了之前学习的关于电路设计的知识还将eda的技术加入其中。

对vhdl语言的详尽讲解更是让我深刻理解了vhdl语言的编程原理。

由于本门课程是一门硬件学习课程,所以实验必不可少。

通过课程最后实验,我体会一些vhdl语言相对于其他编程语言的特点。

相对于其它计算机语言的学习,如 c 或汇编语言,vhdl 具有明显的特点。

这不仅仅是由于vhdl 作为一种硬件描述语言的学习需要了解较多的数字逻辑方面的硬件电路知识,包括目标芯片基本结构方面的知识更重要的是由于vhdl 描述的对象始终是客观的电路系统。

由于电路系统内部的子系统乃至部分元器件的工作状态和工作方式可以是相互独立、互不相关的,也可以是互为因果的。

这表明,在任一时刻,电路系统可以有许多相关和不相关的事件同时并行发生。

例如可以在多个独立的模块中同时入行不同方式的数据交换和控制信号传输,这种并行工作方式是任何一种基于cpu 的软件程序语言所无法描绘和实现的。

传统的软件编程语言只能根据cpu 的工作方式,以排队式指令的形式来对特定的事件和信息进行控制或接收。

在cpu 工作的任一时间段内只能完成一种操作。

因此,任何复杂的程序在一个单cpu的计算机中的运行,永远是单向和一维的。

因而程序设计者也几乎只需以一维的思维模式就可以编程和工作了。

vhdl 虽然也含有类似于软件编程语言的顺序描述语句结构,但其工作方式是完全不同的。

软件语言的语句是根据cpu 的顺序控制信号,按时钟节拍对应的指令周期节拍逐条运行的,每运行一条指令都有确定的执行周期。

但vhdl 则不同,从表面上观,vhdl 的顺序语句与软件语句有相同的行为描述方式,但在标准的仿真执行中有很大的区别。

vhdl 的语言描述只是综合器赖以构成硬件结构的一种依据,但进程语句结构中的顺序语句的执行方式决非是按时钟节拍运行的。

实际情况是其中的每一条语句的执行时间几乎是0 (但该语句的运行时间却不一定为0),即1000 条顺序语句与10条顺序语句的执行时间是相同的。

在此,语句的运行和执行具有不同的概念(在软件语言中,它们的概念是相同),的执行是指启动一条语句,允许它运行一次,而运行就是指该语句完成其设定的功能。

通过实验,我认识到理论要与实际结合,培养动手动脑能力的重要性,做事情要抱着一丝不苟的态度,这样才能做好事情。

同时也入一步了解到eda的强大之处,硬件电路的优秀的地方,对硬件方面更感兴趣了。

这门课程的学习,为我以后的专业知识的学习打下了良好的基础。

篇二:vhdl 编程的一些心得体会vhdl 编程的一些心得体会(转) vhdl 是由美国国防部为描述电子电路所开发的一种语言,其全称为(very high speedintegrated circuit) hardware description language。

与另外一门硬件描述语言 veriloghdl 相比,vhdl 更善于描述高层的一些设计,包括系统级(算法、数据通路、控制)和行为级(寄存器传输级),而且 vhdl 具有设计重用、大型设计能力、可读性强、易于编译等优点逐渐受到硬件设计者的青睐。

但是,vhdl 是一门语法相当严格的语言,易学性差,特别是对于刚开始接触 vhdl 的设计者而言,经常会因某些小细节处理不当导致综合无法通过。

为此本文就其中一些比较典型的问题展开探讨,希望对初学者有所帮助,提高学习进度。

一.关于端口vhdl 共定义了 5 种类型的端口,分别是 in, out,inout, buffer及 linkage,实际设计时只会用到前四种。

in 和 out 端口的使用相对简单。

这里,我们主要讲述关于 buffer和inout 使用时的注意事项。

与 out 端口比,buffer 端口具有回读功能,也即内部反馈,但在设计时最好不要使用buffer,因为 buffer类型的端口不能连接到其他类型的端口上,无法把包含该类型端口的设计作为子模块元件例化,不利于大型设计和程序的可读性。

若设计时需要实现某个输出的回读功能,可以通过增加中间信号作为缓冲,由该信号完成回读功能。

双向端口 inout 是四种端口类型中最为特殊的一种,最难以学习和掌握,为此专门提供一个简单程序进行阐述,部分程序如下:... ?① datab&lt;=din when ce=’1’ and rd=’0’ else② (others=&gt;’z’);③ dout&lt;=datab when ce=’1’ and rd=’1’ else④ ( others=&gt;’1’ );? ?程序中 datab 为双向端口,编程时应注意的是,当 datab 作为输出且空闲时,必须将其设为高阻态挂起,即有类似第②行的语句,否则实现后会造成端口死锁。

而当 datab 作为有效输入时, datab 输出必须处于高阻态,对于该例子中即,当 ce=’1’ and rd=’1’时,二.信号和变量常数、信号和变量是 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&lt;=d;⑤ end if;⑥ end process;? ?实际中 clk 对数据端 d的输入有一定的时间限制,即在 clk 上升沿附近(建立时间和保持时间之内),d必须保持稳定,否则 q输出会出现亚稳态,如下图所示。

相关文档
最新文档