北理VHDL硬件描述语言实验(四次全)
北理工VHDL实验报告
本科实验报告实验名称:VHDL语言及集成电路设计实验课程名称:VHDL语言及集成电路设计实验时间:2014.5任课教师:桂小琰实验地点:4-427实验教师:任仕伟实验类型:□原理验证□综合设计□自主创新学生姓名:学号/班级:组号:学院:信息与电子学院同组搭档:专业:电子科学与技术成绩:实验一:带有异步复位端的D触发器一、实验目的(1)熟悉linux操作环境和modelsim软件环境(2)理解时序逻辑和组合逻辑电路的区别(3)理解并行语句和顺序语句(4)用VHDL语言编写一个带有异步复位端的D触发器及其测试文件二、实验原理(1)组合逻辑和时序逻辑○1组合逻辑电路当前输出的值仅取决于当前的输入,不需要触发器等具有存储能力的逻辑单元,仅仅使用组合逻辑门○2时序逻辑电路的当前输出不仅取决于当前的输入,还与以前的输入有关,这类电路中包括寄存器等元件,也包括组合逻辑电路,寄存器通过一个反馈环和组合逻辑模块相连。
触发器便是属于时序逻辑电路(2)并行和顺序代码从本质上讲,VHDL代码是并发执行的。
只有PROCESS,FUNCTION或PROCEDURE内的代码才是顺序执行的。
当它们作为一个整体时,与其他模块之间又是并发执行的。
以下是3个并发描述语句(stat1,stat2和stat3)的代码,会产生同样的电路结构。
stat1 stat3 stat1stat2 = stat2 = stat3 = 其他排列顺序stat3 stat1 stat2(3)并行语句——进程(PROCESS)○1语法结构:[进程名: ]PROCESS (敏感信号列表)[变量说明语句]…BEGIN…(顺序执行的代码)…END PROCESS [进程名];○2PROCESS 的特点1多进程之间是并行执行的;2进程结构内部的所有语句都是顺序执行的;3进程中可访问结构体或实体中所定义的信号;4进程的启动是由敏感信号列表所标明的信号来触发,也可以用WAIT语句等待一个触发条件的成立。
VHDL硬件描述语言
b. 类型参数说明 必须放在端口说明前面,用于指定参数。 c. 端口说明格式 PORT( 端口名{,端口名}: 方向 端口名{,端口名}: 方向 数据类型名; 数据类型名);
其中, 方向—— IN OUT INOUT BUFFER LINKAGE 输入 输出 双向 输出 不指定方向
注意: * OUT 结构选体中不能再用; * BUFFER 结构选体中能再用。
5
二、VHDL程序的基本结构
* 一个完整的VHDL语言程序通常包含: 实体、 结构体、库、包集合和配置五个部分 a. 实体(Entity) ——用于描述所设计系统或单元的外部接口信号; b. 结构体(Architecture) —— 用于描述所设计系统或单元内部的结构和行为。
6
c. 库(Librrary) —— 用于存放已经编译的实体、结构体、包集合和配置。 库可由用户生成或由ASIC芯片制造商提供,以便于 在设计中为大家所共享; d. 包集合(Package) —— 用于存放各设计模块都能共享的数据类型、常数和子 程序等; e. 配置(Configuration) —— 用于从库中选取所需单元来组成系统设计的不同版本; 这个部分有时可以没有。
实体
结构体
a b
&
y
16
3.库
—— 库(Library)是经编译后的数据的集合,它存放包 集合定义、实体定义、结构体定义和配置定义。 a. 在VHDL语言中,库的说明总是放在设计单元的最前面, 书写格式为: LIBRARY 库名 ; 注意:
- 在设计时可以直接使用库中的数据。 - 设计者可以共享已经编译过的设计结果。 - 库和库之间是独立的,不能互相嵌套。
12
i 结构描述: 描述该设计单元的硬件结构。主要用配置指定语句及元 件例化语句描述元件的类型及元件的互连关系。 ii 行为描述: 描述该设计单元的功能,主要用函数,过程和进程语句, 以算法形式描述数据的变换和传送。 iii 数据流方式/RTL描述: 以类似于寄存器传输级(RTL)的方式描述数据的传输 和变换,主要用并行信号赋值语句,显式表示该设计单 元的行为, 隐式表示了该设计单元的结构。
Verilog HDL硬件描述语言实验报告
Verilog HDL实验报告学院:应用科学学院班级:电科13-2班姓名:学号:实验一组合逻辑电路设计(1)实验目的(1)熟悉FPGA设计流程;(2)熟悉DE2开发板的基本元件使用(开关、发光二极管);(3)学习基本组合逻辑元件的Verilog HDL设计以及实现(数据选择器);(4)掌握连续赋值语句使用;实验内容本实验的目的是学习如何连接一个简单的外部输入、输出器件到FPGA 芯片以及如何在FPGA器件上实现逻辑电路控制简单外部器件。
考虑使用DE2开发板上拨动开关SW17-0(toggle Switch)作为电路的输入。
使用发光二极管(Light Emitt-ing Diodes,LEDs)和7段显示数码管(7-segment Display)作为电路的输出。
第1部分连续赋值语句步骤1、新建Quartus II工程,选择Cyclone II EP2C35F672C6作为目标芯片,该芯片是DE2开发板上的FPGA芯片;2、编写Verilog HDL代码加入到Quaruts II工程;3、引脚分配,并编译工程该工程;4、将编译好的电路下载到FPGA器件。
扳动拨动开关观察相应的发光二极管显示,验证电路功能是否正确;代码module part1(input wire[2:0]SW,output wire LEDR);wire r_g,s_g,qa,qb;and u1(r_g, SW[0], SW[1]);and u2(s_g, SW[1], SW[2]);nor u3(qa, r_g, qb);nor u4(qb, qa, s_g);assign LEDR = qa;endmodule第2部分简单的数据选择器步骤1 .新建Quartus II工程;2.在工程中加入8位宽的2选1数据选择器Verilog HDL代码。
使用DE2开发板上的SW17作为输入s,开关SW7-0作为输入X,SW15-8作为输入Y。
北理VHDL硬件描述语言实验(四次全)
clk_gen:PROCESS BEGIN clk<='0'; WAIT FOR clk_period/2; clk<='1'; WAIT FOR clk_period/2; END PROCESS; d_gen:PROCESS BEGIN d<='0'; WAIT FOR 100 ns; d<='1'; WAIT FOR 100 ns; END PROCESS; rst_gen:PROCESS BEGIN rst<='1'; WAIT FOR 150 ns; rst<='0'; WAIT FOR 150 ns; rst<='1'; WAIT FOR 150 ns; WAIT; END PROCESS; END behave;
1. linux 基本操作 · 登陆后,桌面右键“open terminal”,输入命令“vsim”打开 Modelsim 软件; · 右键“open terminal”,输入命令“gftp”,出现窗口,进行登录连接主机向 ftp 上传文 件。 2. Modelsim 基本操作流程 建立工程 创建文件 编写程序 保存并编译 仿真 3.设计编写 D 触发器
四、仿真结果及说明
实验仿真的图形如下
从激励文件可以看出,时钟是周期为 50ns 的方波,而复位端 rst 的信号设置为前 150ns 为高电平,接下来 150ns 为低电平,之后均为高电平。 D 触发器的 VHDL 语言中明确指出
也就是说,复位信号 rst 高有效,在激励文件中,rst=’0’时,复位端无效,D 触发器正常 工作。 在仿真图形中可以看到,在复位端无效的 150ns 中,每一次时钟的上升沿到来,输出 q
VHDL硬件描述语言实验报告
硬件描述语言实验附录姓名:xxx学号:xxx指导教师:xxx目录硬件描述语言实验附录 (1)实验1.三输入与门电路实验 (2)实验2. 三—八译码器实验 (3)实验3. D触发器实验 (4)实验4. 分频器实验 (5)实验5. 状态机实验 (8)实验1.三输入与门电路实验--三输入与门电路threeinput--姓名:王定--学号:1306034248--中北大学LIBRARY IEEE; --调用库USE IEEE.STD_LOGIC_1164.ALL;--库文件--------------------------------------------------------------ENTITY threeinput IS --定义实体名,其名称必须与VHDL文本文件名称相同PORT( A: IN STD_LOGIC; --输入端口,时钟输入B: IN STD_LOGIC; --输入端口,个位写入使能C: IN STD_LOGIC; --输入端口,十位写入使能CO: OUT STD_LOGIC); --输出端口,溢出标志END ENTITY threeinput; --结束端口定义--------------------------------------------------------------ARCHITECTURE RTL OF threeinput IS--定义结构体BEGINPROCESS(A,B,C) IS --开始,必须带上BEGINCO<=A AND B AND C ;END PROCESS;END ARCHITECTURE RTL; --结束结构体表1. 三输入与门电路VHDL实验代码图1. 三输入与门电路仿真波形图,A,B,C输入,CO输出实验2. 三—八译码器实验--王定--2015年11月25日--3线-8线译码器LIBRARYIEEE; --调用库USEIEEE.STD_LOGIC_1164.ALL; --库文件-------------------------------------------------------------ENTITYthreetoeightISPORT(DA TAIN:INSTD_LOGIC_VECTOR(2DOWNTO0);--数据输入DA TAOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--数据输出ENDENTITYthreetoeight; --结束实体-------------------------------------------------------------ARCHITECTUREBEHA VEOFthreetoeightIS--结构体BEGIN --不能漏掉PROCESS(DATAIN) --数据输入BEGIN --开始,不能漏掉CASEDATAINIS --情况判定WHEN"000"=>DA TAOUT<="00000001";WHEN"001"=>DA TAOUT<="00000010";WHEN"010"=>DA TAOUT<="00000100";WHEN"011"=>DATAOUT<="00001000";WHEN"100"=>DA TAOUT<="00010000";WHEN"101"=>DA TAOUT<="00100000";WHEN"110"=>DATAOUT<="01000000";WHEN"111"=>DA TAOUT<="10000000";WHENOTHERS=>null;ENDCASE;ENDPROCESS;ENDBEHA VE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder_3_to_8 ISPORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC;y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END decoder_3_to_8;ARCHITECTURE rtl OF decoder_3_to_8 ISSIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0);BEGINindata <= c & b & a;PROCESS (indata,g1,g2a,g2b)BEGINIF (g1 = '1' AND g2a = '0' AND g2b = '0' ) THENCASE indata ISWHEN "000" => y <= "11111110";WHEN "001" => y <= "11111101";WHEN "010" => y <= "11111011";WHEN "011" => y <= "11110111";WHEN "100" => y <= "11101111";WHEN "101" => y <= "11011111";WHEN "110" => y <= "10111111";WHEN "111" => y <= "01111111";WHEN OTHERS=>y<= "XXXXXXXX";END CASE;ELSEY <= "11111111";END IF;END PROCESS;END rtl;表2. 三—八译码器VHDL实验代码图2. 三—八译码器仿真波形图--异步复位/置位的D触发器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff3 ISPORT(clk,d,clr,pset:IN STD_LOGIC;q : OUT STD_LOGIC);END dff3;ARCHITECTURE rtl OF dff3 ISBEGINPROCESS (clk,pset,clr)BEGINIF (pset='0') THENq<='1';ELSIF (clr='0') THENq<='0';ELSIF (clk'EVENT AND clk='1') THENq<=d;END IF;END PROCESS ;END rtl; --同步复位的D触发器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY dff4 ISPORT(clk,d,clr:IN STD_LOGIC;q : OUT STD_LOGIC );END dff4;ARCHITECTURE rtl OF dff4 ISBEGINPROCESS (clk)BEGINIF (clk'EVENT AND clk='1') THENIF (clr='0') THENq<='0';ELSEq<=d;END IF;END IF;END PROCESS ;END rtl;表3. 异步和同步D触发器VHDL实验代码图3. 异步触发器仿真波形图图4. 同步触发器仿真波形图--四分频器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;----------------------------------------------ENTITY clk_div ISPORT(clk: IN STD_LOGIC;--时钟输入clk_div2: OUT STD_LOGIC;clk_div4: OUT STD_LOGIC;clk_div8: OUT STD_LOGIC;clk_div16: OUT STD_LOGIC);END ENTITY clk_div;---------------------------------------------------ARCHITECTURE rtl OF clk_div ISSIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0);--定义一个四位的信号BEGINPROCESS(clk)BEGINIF(clk' event AND clk ='1') THEN--上升沿到来IF (count="1111") THEN--达到最大计数值count<="0000"; --置零ELSEcount<=count+1; --计数END IF;END IF;END PROCESS;clk_div2<=count(0); --2分频clk_div4<=count(1); --4分频clk_div8<=count(2); --8分频clk_div16<=count(3); --16分频END rtl;表4. 四分频器VHDL实验代码图5. 四分频器仿真波形图TMP1<= '0'; --置0,带入语句滞后ELSETMP1<= '1'; --置1END IF;END IF;END IF;END PROCESS;---------------------------------------------PROCESS(CLKIN,RST)BEGINIF RST ='1'THEN --复位有效COUNT2 <= "00000000"; --立即清零TMP2<= '1';ELSIF CLKIN'EVENT AND CLKIN='0' THEN --下降沿到来IF COUNT2 = "00000100" THEN --100==4(5个数据)COUNT2 <= "00000000";ELSECOUNT2 <= COUNT2 + 1;IF COUNT2 < "00000010" THEN --10==2(三个下降沿),小于三个上升沿时,始终置0,三个下降沿对应6分频TMP2<= '1';ELSETMP2<= '0';END IF;END IF;END IF;END PROCESS;END RTL;--信号是等待整个进程结束完后,再赋值图6. 五分频器仿真波形图实验5. 状态机实验ST <= S3; END IF; OP <= '1'; WHEN S3=> IF X = '0' THEN ST <= S3; ELSE ST <= S0; END IF; OP <= '0'; END CASE; END IF; END PROCESS STATE_COMP;END ARCHITECTURE A;END IF; END CASE; END IF;END PROCESS state_comp; END a;表6. moore 与mealy 状态机VHDL 实验代码图7. moore 型状态机VHDL 实验代码图8. mealy 型状态机仿真波形图。
VHDL硬件描述语言实验指导书(部分)
目录第一部分 QuartusⅡ CPLD开发系统简介 (1)第二部分 基础验证实验 (16)实验1 译码器及译码显示电路设计 (16)实验2 编码器及数据选择器设计 (20)实验3 加法器设计 (23)实验4 乘法器设计 (26)实验5 触发器设计 (34)实验6 寄存器设计 (39)实验7 移位寄存器设计 (41)实验8 计数器设计 (44)实验9 可预置数的计数器设计.....错误!未定义书签。
第三部分 设计型实验...............错误!未定义书签。
实验1 频率计设计...............错误!未定义书签。
实验2 多功能数字钟设计.........错误!未定义书签。
实验3 彩灯控制器设计...........错误!未定义书签。
实验4 交通灯控制器设计.........错误!未定义书签。
第一部分 QuartusⅡ CPLD开发系统简介1.1 概述ALTERA公司的CPLD开发系统目前主要MAX+PLUSⅡ和QuartusⅡ两种,其中MAX+PLUSⅡ在前面几章内容已经做了详细介绍。
QuartusⅡ的用途与MAX+PLUSⅡ是一致的也是解决CPLD/FPGA开发过程中的编辑、编译、综合及仿真等内容。
目前最高版本为QuartusⅡ2.1,是目前CPLD/FPGA开发工具中较为理想的综合、仿真软件。
具有许多优良的特性。
1、承了MAX+PLUSⅡ的优点:图形输入依然形象,图形符号与MAX+PLUSⅡ符号一样符合数字电路的特点,大量74系列器件符号使初学者在较短的时间内利用图形编辑设计出需要的电路。
文本输入几乎与MAX+PLUSⅡ相同,而且在文本的每一行都有行号,使用语言编写的电路清晰易读。
底层编辑仍然采用Chipview方式,管脚排列位置映射了实际器件管脚,简单的鼠标拖放即可完成底层编辑。
2、持的器件更多:除了支持MAX3000、MAX7000、FLEX6000、FLEX10KE、ACEX1K等MAX+PLUSⅡ已支持的器件外,还支持PEX20K、APEX20KE,APEXⅡ、EXCALIBUR-ARM、Mercury、Stratix等MAX+PLUSⅡ下无法支持的大容量高性能的器件。
《VHDL硬件描述语言》课程教学大纲
《VHDL硬件描述语言》课程教学大纲课程代码:ABJD0414课程中文名称: VHDL硬件描述语言课程英文名称:Very-High-Speed Integrated Circuit HardwareDescription Language课程性质:必修课程学分数:2学分课程学时数:32学时授课对象:自动化专业本课程的前导课程:电路,模拟电子,C语言程序设计一、课程简介本课程是电类专业的专业基础课,要求学生通过本课程的学习和实验,初步掌握常用EDA工具的使用方法、FPGA的开发技术以及VHDL语言的编程方法。
能比较熟练地使用QuartusII等常用EDA软件对FPGA和CPLD作一些简单电路系统的设计,同时能较好地使用VHDL语言设计简单的逻辑电路和逻辑系统,学会行为仿真、时序仿真和硬件测试技术,为现代EDA工程技术的进一步学习,ASIC器件设计以及超大规模集成电路设计奠定基础。
作为一门专业基础课,除了为现代电子线路课程,软件无线电课程奠定理论和实践方面的基础外,还是其他一些课程的先修课,如微电子导论、现代ASIC设计、硬件描述语言仿真/综合器设计、大规模集成电路设计等。
二、教学基本内容和要求(一)概论介绍现代EDA技术,VHDL概况,介绍自顶向下的系统设计方法以及FPGA和CPLD的基本技术,要求对现代EDA技术及实现工具的使用方法和发展情况有一初步了解。
重点与难点:EDA技术的设计工具(二)EDA设计流程及工具首先介绍基于EDA软件的FPGA/CPLD开发流程和ASIC设计流程,然后分别介绍与这些设计流程中各环节密切相关的EDA工具软件,最后简述QuartusII的基本情况和IP。
重点与难点:EDA仿真设计流程。
(三)FPGA/CPLD结构与应用主要介绍几类常用的大规模可编程逻辑器件的结构和工作原理。
对CPLD的乘积项原理和FPGA的查找表原理分别进行剖析。
最后介绍相关的编程下载和测试技术。
重点与难点:FPGA/CPLD的工作作原理及编程技术。
数字电路设计实验vhdl语言实验报告
实验一秒表计数器的设计实验目的:本实验通过设计四种频率可选的数字时钟系统, 以达到熟悉VHDL 语言编程语法、设计思路和熟练掌握Quartus II 开发软件的目的。
二、实验内容:该数字时钟的显示格式如下所示: HH: MM: SS, 其中HH表示时计数的两位, MM表示分计数的两位, SS表示秒计数的两位。
本系统输入信号分别为复位信号rst(高有效)、sel(两位信号, 分别可以选择2分频、4分频8分频和16分频)、clk_in(时钟信号)、8位时输出、8位分输出、8位秒输出(其中高4为表示对应的高半字节、低4位表示的低半字节, 譬如当时间为08:59:30时, 时输出为”0000_1000”,分输出为”0101_1001”,秒输出为”0011_0000”)。
该时钟系统可以通过Sel信号时钟运行的快慢。
三、实验流程:通过对实验内容的分析: 可以考虑时钟系统的可由三部分组成: 1.分频器:分频器为时序电路并且通过《数字电路》理论课程的学习可知由计数器来实现, 同学可以回想一下实验1中是如何实现计数器电路的设计), 该模块主要产生2.4.8、16分频的时钟信号;2.多路选择器:在VHDL中多路选择器为组合逻辑, 可以有多种实现方法, 在这里主要选用了case语句来实现。
该模块的作用是从分频器中根据Sel信号选择适当的时钟信号;3.时钟控制器:该模块比较复杂, 主要实现功能是实现一个24小时的计时。
当时间为00:00:59的时候下一个时钟到来时状态的跳变为00:01:00, 计时中多数计数为加1操作, 有几个特殊状态需要重点考虑:当时间产生分进数时, 譬如上例。
当时间产生时进数时, 譬如00:01:59时刻的下一个状态为00:02:00;当时间产生时进数时, 譬如00:59:59是个的下一个状态为01:00:00。
当时间产生天进数时, 譬如23:59:59的下一个状态为00:00:00。
四、仿真要求:1、本次试验的结果全部采用功能仿真分析:在结果图中能够看到让复位信号rst为有效的情况下, 所有的输出为00:00:00;2.当频率选择输出分别为”00”、”01”、”10”、”11”时秒为的进数分别包含2.4.8、16倍clk_in的时钟周期;3.可以看到完整的计时周期00:00:00->23:59:59->00:00:00。
VHDL硬件描述语言四位加法器实验报告
题目:硬件描述语言实验四:四位加法器姓名:***** 学号: ******地点:主楼402 时间: 3月21日一、实验目的:进一步练习VHDL语言设计工程的建立与仿真的步骤和方法、熟悉VHDL语言基本设计实体的编写方法。
二、实验环境:PC个人计算机、Windows XP操作系统、Quartus II集成开发环境软件。
三、设计要求:采用三种方式设计一个四位加法器,实体名称分别为“adder4”、“adder4_2”、和“adder_3”,四位加法器的引脚与功能如下表。
端口模式端口名数据类型说明in (输入)astd_logic_vector(3 downto 0)加数b 加数ci std_logic 低位进位out (输出)s std_logic_vector(3 downto 0) 和co std_logic 高位进位四、实验步骤:1、采用寄存器传输的描述方式:首先新建一个工程,命名为“adder4”,然后编辑代码。
注意在模块内部(构造体说明部分)需要定义三个连接线,定义语句为:signal c0,c1,c2 : std_logic代码如下:library ieee;use ieee.std_logic_1164.all;entity adder4 isport(a,b : in std_logic_vector (3 downto 0);ci : in std_logic;s : out std_logic_vector (3 downto 0);co : out std_logic);end entity;architecture rtl of adder4 issignal c0,c1,c2 : std_logic;begins(0) <= a(0) xor b(0) xor ci;c0<= (a(0) and b(0)) or (a(0) and ci) or (b(0) and ci);s(1)<= a(1) xor b(1) xor c0;c1<= (a(1) and b(1)) or (a(1) and c0) or (b(1) and c0);s(2)<= a(2) xor b(2) xor c1;c2<= (a(2) and b(2)) or (a(2) and c1) or (b(2) and c1);s(3)<= a(3) xor b(3) xor c2;co<= (a(3) and b(3)) or (a(3) and c2) or (b(3) and c2); end rtl;仿真波形图如下:仿真电路图如下:s~1c0~0c0~1c0~3c0s~3c1~0c1~1c1~3c1s~5c2~0c2~1c2~3c2s~7co~0co~1co~3co~4cicoa[3..0]b[3..0]s[3..0]由上图可知设计是正确的。
VHDL与硬件描述语言
VHDL与硬件描述语言VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,被广泛应用于数字电路和系统的设计、仿真和验证中。
本文将介绍VHDL的基本概念、语法和应用,以及其在硬件设计中的重要性和优势。
一、VHDL的基本概念与语法VHDL是由美国国防部下属的VHSIC(Very High Speed Integrated Circuits)计划发起的硬件描述语言标准化工作中发展起来的,它源于Ada语言,并在此基础上进行了修改和扩展。
VHDL采用了面向对象的设计思想,通过描述硬件的结构和行为,实现了对数字系统的高层次抽象。
VHDL的基本元素包括实体(entity)、结构(architecture)和配置(configuration)。
实体定义了模块的接口和信号,结构描述了模块内部的组织和连接关系,配置用于将不同实体和结构进行绑定。
此外,VHDL还提供了丰富的数据类型、控制结构和函数库,以支持复杂的逻辑运算和算术操作。
VHDL代码的编写需要遵循一定的语法规则,如正确使用关键字、语句结束符号等。
此外,注释和缩进等规范的使用可以提高代码的可读性和可维护性。
二、VHDL的应用1. 数字电路设计VHDL在数字电路设计中被广泛应用,通过使用VHDL语言,设计人员可以描述和验证各种数字逻辑电路,包括组合逻辑电路和时序逻辑电路。
借助VHDL仿真工具,可以进行功能仿真、时序仿真和行为仿真,验证设计的正确性和性能。
2. 系统级设计除了用于电路级设计,VHDL还可以用于系统级设计。
通过对模块的整合和功能描述,可以搭建更为复杂的系统,并在此基础上进行仿真和验证。
VHDL支持高级抽象和层次化设计,使得系统级设计更加灵活和可重用。
3. ASIC和FPGA设计VHDL在应用特定的集成电路(ASIC)和现场可编程门阵列(FPGA)的设计中,具有非常重要的地位。
ASIC是在集成电路制造厂中进行定制化设计和生产的芯片,而FPGA则是可以在现场进行编程和配置的可重构芯片。
VHDL硬件课程设计实验报告
硬件课程设计实验报告一、全加器设计1、实验目的(1)了解四位全加器的工作原理。
(2)掌握基本组合逻辑电路的FPGA实现。
(3)熟练应用Quartus II进行FPGA开发。
2、实验原理全加器是由两个加数X i和Y i以及低位来的进位C i-1作为输入,产生本位和S i以及向高位的进位C i的逻辑电路。
它不但要完成本位二进制码X i和Y i相加,而且还要考虑到低一位进位C i-1的逻辑。
对于输入为X i、Y i和C i-1,输出为S i和C i的情况,根据二进制加法法则可以得到全加器的真值表如下表所示:全加器真值表由真值表得到S i和C i的逻辑表达式经化简后为:这仅仅是一位的二进制全加器,要完成一个四位的二进制全加器,只需要把四个级联起来即可。
i3、实验内容本实验要完成的任务是设计一个四位二进制全加器。
具体的实验过程就是利用实验系统上的拨动开关模块的K1~K4作为一个加数X输入,K5~K8作为另一个加数Y输入,用LED模块的LED1~LED8来作为结果S输出,LED亮表示输出‘1’,LED灭表示输出‘0’。
实验箱中的拨动开关、LED与FPGA的接口电路,以及拨动开关、LED 与FPGA的管脚连接在以前的实验中都做了详细说明,这里不在赘述。
4、实验现象与结果以设计的参考示例为例,当设计文件加载到目标器件后,拨动相应的拨动开关,输入两个四位的加数,则在LED灯上显示这两个数值相加的结果的二进制数。
5、实验报告(1)出不同的加数,绘仿真波形,并作说明。
(2)在这个程序的基础上设计一个八位的全加器。
(3)在这个程序的基础上,用数码管来显示相乘结果的十进制值。
(4)将实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录下来。
二、七段数码显示设计1、七段显示基本原理七段显示器,在许多产品或场合上经常可见。
其内部结构是由八个发光二极管所组成,为七个笔画与一个小数点,依顺时针方向为A、B、C、D、E、F、G与DP等八组发光二极管之排列,可用以显示0~9数字及英文数A、B、C、D、E、F。
VHDL语言+实验
VHDL语言简介+VHDL语言编程实验VHDL语言简介一、VHDL语言基本概况VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,为标准硬件描述语言,是美国IEEE标准协会于1987年公布的通用工业标准硬件描述语言,1995年,我国将VHDL 作为EDA硬件描述语言的国家标准,用语言的方式而非图形等方式描述硬件电路。
VHDL主要用于描述数字系统的结构、行为、功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
VHDL语言基本特点:(1)是IEEE的一种标准,语法比较严格,便于使用、交流和推广;(2)具有可读性,既可以被计算机接受,也容易被人们所理解;(3)可移植性好。
在不同的平台上可方便移植;(4)描述能力强,覆盖面广。
支持从逻辑门层次的描述到整个系统的描述;(5)是一种高层次的、与器件无关的设计。
设计者没有必要熟悉器件内部的具体结构;(6)可以设计所有存在的硬件集成电路;(7)设计硬件电路非常灵活,不受现有硬件电路限制;(8)设计方式灵活多样:方程表达、真值表表达、条件转换表达等等。
二、VHDL语言的结构组成VHDL语言程序的电路基本结构一般由库程序包说明、实体说明(Entity Declaration)和结构体(Architecture Body)三部分构成。
1. 库和程序包说明(Library)库是专门存放预编译程序包(Package)的地方,它们可以在其它设计中被调用。
课题三:VHDL硬件描述语言
颜色
3) 实验解释
(1) 信号输入键为SW1,SW2。按下SW1键,信号灯 LED_1亮,即把“1”信号输入到30引脚(S),否则表示送入信 号“0”。按下SW2键,信号灯LED_2亮,即把“1”信号输入 到35引脚(D),否则表示送入信号“0” 信号输出由信号灯D101来显示。LED1(或LED2)亮时表示输 出信号为“1”,否则为信号“0”,以此表示17、16引脚(Y1、 Y0)的信号。
LOG O
数字电子电路与EDA技术教材
课题三:VHDL硬件描述语言
1
实训3 数据分配器的EDA设计
LOG O
» 数据分配器是一种处理数据的逻辑电路,用来将一个输入
信号输出(分配)到指定的输出端。
» 数据分配器可分为1对2数据分配器、1对4数据分配器等,
下面以1对2数据分配器为例来介绍数据分配器的设计。
颜色
(6) 保存并查错:选取窗口菜单File→Project→Save&Check,即可 针对电路文件进行检查。 (7) 修改错误:针对Massage-Compiler窗口所提供的信息修改电路文 件,直到没有错误为止。 (8) 保存并编译:选取窗口菜单File→Project→Save &Compile,即 可进行编译,产生demuti_2v.sof烧写文件。 (9) 创建电路符号:选取窗口菜单File→Create Default Symbol,可 以产生demuti_2v.sym文件,代表现在所设计的电路符号。选取 File→Edit Symbol,进入Symbol Edit画面。 (10) 创建电路包含文件:选取窗口菜单File→Create Default Include File,产生用来代表现在所设计电路的demuti_2v.inc文件,供其他 VHDL编译时使用。 (11) 时间分析:选取窗口菜单Utilities→Analyze Timing,再选取窗 口菜单Analysis→Delay Matrix,产生时间分析结果。
VHDL实验四
实验报告课程名称Experimentsfor the Course “Principles and Applications of Programmable Device”实验项目名称Experiment four: Complex Circuit Design实验类型Confirmatory experiment 实验学时 2 班级20100521 学号2010052104 姓名邝祥指导教师王向红实验室名称水声楼511 实验时间2013.06.24实验成绩预习部分实验过程表现实验报告部分总成绩教师签字日期哈尔滨工程大学教务处制实验报告相关要求实验是理论联系实际的重要环节,实验报告必须在科学实验的基础上进行,实验报告的撰写是知识系统化的吸收和升华的过程,实验报告应该体现完整性、规范性、正确性、有效性。
现将撰写实验报告的有关内容说明如下:1.实验项目名称2.实验目的本次实验所涉及并要求掌握的知识点,要培养哪方面的能力、达到什么样的效果等。
3.实验内容与实验步骤要完成的实验内容、应用(或涉及)的原理、设计实验数据表格及具体实验步骤等。
4.实验环境实验所使用的器件、仪器设备名称及规格等。
5.实验过程与分析根据具体实验,记录、整理相应数据表格、绘制曲线、波形图等,并进行误差分析;详细记录在实验过程中发生的故障和问题,并进行故障分析,说明故障排除的过程及方法。
6.实验结果总结对实验结果进行分析,完成思考题目,总结实验的心得体会,并提出实验的改进意见。
7.教师评分原则实验项目成绩应综合以下三部分给出。
1.预习部分:学生在上实验课之前应认真预习,准备实验相关材料,可以是预习报告,也可以是实验报告中的需要学生上课前完成的部分;2.实验过程表现:主要考查学生在实验过程中的动手能力、解决问题的能力和实验完成情况等;3.实验报告部分:实验报告应书写工整、内容全面、原始记录完整、图表清晰,体现出学生综合分析、总结的能力。
VHDL硬件描述语言
第6章 VHDL硬件描述语言
【例6-1】用VHDL设计一个非门(反向器)。
非门即 y = a,设反相器的VHDL的文件名是not1.vhd,其中的.vhd是VHDL程序文件的 扩展名。程序结构如下:
--库和程序包部分
LIBRARY IEEE;
--打开IEEE库
USE IEEE.STD_LOGIC_1164.ALL; --调用库中STD_LOGIC_1164程序包
(3)移位运算符
移位运算符是VHDL_94新增的运算符,其中SLL (逻辑左移)和SRL(逻辑右移)是逻辑移位、SLA (算术左移)和SRA(算术右移)是算术移位、ROL (循环左移)和ROR(循环右移)是循环移位。
output1 :OUT BIT );
END mybody;
ARCHITECTURE myprog OF mybody IS --结构体名为myprog
SIGNAL m:BIT;
--定义中间信号m
BEGIN
m <= in1;
--输入信号传送给中间信号
output1 <= m;
--中间信号送给输出信号
l 第一个字符必须以字母开头;下划线不能连用;最 后一个字符不能是下划线;对大小写字母不敏感(英文 字母不区分大小写);长度不能超过32个字符。
第6章 VHDL硬件描述语言
6.2.2 数据对象
VHDL中凡是可以赋予一个值的对象都可称为数据对象。 1.常量
常量是在设计实体中保持某一特定值不变的量。常 量的格式如下: CONSTANT 常量名:数据类型:= 表达式; 注意:数值和单位之间要留空格
第6章 VHDL硬件描述语言
用VHDL设计电路主要的工作过程是: 编辑 、编 译、功能仿真(前仿真)、综合 、布局、布线 、后仿 真(时序仿真)。
vhdl实验报告
福建农林大学计算机与信息学院信息工程类实验报告2013年11 月13 日实验项目列表福建农林大学计算机与信息学院信息工程类实验报告系:电子信息工程系专业:电子信息工程年级: 2010级姓名:学号:实验课程: VHDL数字系统设计实验室号:__ 田C407 实验设备号: 17 实验时间: 11.12 指导教师签字:成绩:实验一数控分频器的设计1.实验目的和要求学习数控分频器的设计、分析和测试方法。
2.实验原理信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例1所示。
数控分频器的仿真波形如图1所示:输入不同的CLK频率和预置值D,给出如图1的时序波形。
100.0μs200.0μs300.0μs400.0μs图1 当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns)3.主要仪器设备(实验用的软硬件环境)实验的硬件环境:微机一台、GW48 EDA实验开发系统一套、电源线一根、十芯JTAG口线一根、USB下载线一根、USB下载器一个、示波器实验的软件环境:Quartus II 9.0软件4.操作方法与实验步骤(1)创建工程,并命名位test。
(2)打开QuartusII,建立VHDL文件,并输入设计程序。
保存为DVF.(3)选择目标器件。
Acex1k—EP1K100QC208-3。
(4)启动编译。
(5)建立仿真波形图。
(6)仿真测试和波形分析。
(7)引脚锁定编译。
(8)编程下载。
(9)硬件测试5.实验内容及实验数据记录在实验系统上硬件验证例5-20的功能。
可选实验电路模式1(第一章图4);键2/键1负责输入8位预置数D(PIO7-PIO0);CLK由clock0输入,频率选65536Hz 或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER)。
编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。
VHDL实验报告
专用集成电路实验报告13050Z011305024237刘德文实验一开发平台软件安装与认知实验实验内容1、本实验以三线八线译码器(LS74138)为例,在Xilinx ISE 9、2软件平台上完成设计电路得VHDL文本输入、语法检查、编译、仿真、管脚分配与编程下载等操作。
下载芯片选择Xilinx公司得CoolRunner II系列XC2C256-7PQ208作为目标仿真芯片、2、用1中所设计得得三线八线译码器(LS74138)生成一个LS74138元件,在Xilinx I SE 9。
2软件原理图设计平台上完成LS74138元件得调用,用原理图得方法设计三线八线译码器(LS74138),实现编译,仿真,管脚分配与编程下载等操作。
源程序:library IEEE;use IEEE。
STD_LOGIC_1164.ALL;use IEEE。
STD_LOGIC_ARITH。
ALL;useIEEE。
STD_LOGIC_UNSIGNED、ALL;-— Unment the following lines to use the declarations that are-- provided for instantiating Xilinx primitiveponents、--library UNISIM;--use UNISIM.Vponents。
all;entity ls74138 isPort ( g1 : in std_logic;g2 : in std_logic;inp : in std_logic_vector(2 downto 0);y : out std_logic_vector(7 downto0));end ls74138;architecture Behavioral of ls74138isbeginprocess(g1,g2,inp)beginif((g1 andg2)='1’) thenﻩcase inp iswhen ”000"=>y<="00000001";ﻩwhen "001”=〉y〈="00000010”;when ”010"=>y<=”00000100”;ﻩwhen ”011”=>y<=”00001000";ﻩwhen "100"=>y〈=”00010000”;ﻩ when "101”=>y〈=”00100000”;when "110”=>y<="01000000";ﻩ when "111"=>y<="10000000";ﻩ when others=>y<="";ﻩ end case;elseﻩﻩ y<="";end if;end process;end Behavioral;波形文件:生成元器件及连接电路思考:有程序可以瞧出,定义了三个输入端,一个输出端、g1,g2为使能输入端,当全为一时,开始执行宽度为三得输入inp,并听过程序实现三八译码器得功能、通过实验,分别用了原理图与vhdl语言两种方式进行调试。
VHDL语言现代电子技术综合实验--4
6
三、结构化描述
7
一位全加器的原理图
8
一位全加器的VHDL结构化描述
9
一位全加器的VHDL结构化描述
有缘学习更多+谓ygd3076或关注桃报:奉献教育(店铺)
10
4、状态机描述
在一个电路涉及许多状态控制的设计时,通常把这个具有时序控制 的电路看作是一个有限状态机(FSM)来进行设计。状态机可分为以下两 种基本类型:
IF a = b THEN c<=’1’ ; ELSE c<=’0’;
END IF;
END PROCESS;
END behavior ;
8位比较器 c
a=b
5
二、 RTL数据流描述
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;
8位比较器 的布尔方程
RTL描述
Mealy型:输出是当前状态和输人信号的函数; Moore型:输出仅是当前状态的函数。
时钟同步的时序逻辑电路: Mealy机
x :输入向量 y :状态变量 Y :下一状态 z :输出向量
时钟同步的时序逻辑电路: Moore机
x :输入向量 y :状态变量 Y :下一状态 z :输出向量
4、状态机描述
b
PORT ( a, b : IN STD_LOGIC_VECTOR ( 7 DOWNTO 0 );
c : OUT STD_LOGIC) ;
END comparator ;
ARCHITECTURE behavior OF comparator IS
BEGIN
PROCESS ( a, b )
BEGIN
现代电子技术综合实验
--设计语言VHDL-4
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、仿真结果及说明
实验仿真的图形如下
从激励文件可以看出,时钟是周期为 50ns 的方波,而复位端 rst 的信号设置为前 150ns 为高电平,接下来 150ns 为低电平,之后均为高电平。 D 触发器的 VHDL 语言中明确指出
也就是说,复位信号 rst 高有效,在激励文件中,rst=’0’时,复位端无效,D 触发器正常 工作。 在仿真图形中可以看到,在复位端无效的 150ns 中,每一次时钟的上升沿到来,输出 q
本科实验报告
实验名称: VHDL 硬件描述语言实验
课程名称: 任课教师: 实验教师: 学生姓名: 学号/班级: 学 专 院: 业:
VHDL 硬件描述语言
实验时间: 实验地点:
□ 原理验证 实验类型: ■ 综合设计 □ 自主创新
组
号:
同组搭档: 成 绩:
目
录
D 触发器的设计与实现........................................................................................................................... 1 一、实验目的 .................................................................................................................................. 1 二、实验内容 .................................................................................................................................. 1 三、D 触发器的设计....................................................................................................................... 1 四、仿真结果及说明....................................................................................................................... 3 五、实验心得与体会....................................................................................................................... 4 步进电机控制器 ...................................................................................................................................... 5 一、实验目的 .................................................................................................................................. 5 二、状态机练习:BCD 计数器 ..................................................................................................... 5 三、步进电机控制器....................................................................................................................... 8 四、实验心得与体会..................................................................................................................... 11 16 位超前进位加法器............................................................................................................................ 12 一、实验目的 ................................................................................................................................ 12 二、设计 4 位超前进位加法器..................................................................................................... 12 三、16 位加法器的设计................................................................................................................ 14 四、仿真结果及说明..................................................................................................................... 16 五、实验心得与体会..................................................................................................................... 16 选择运算器 ............................................................................................................................................ 17 一、实验目的 ................................................................................................................................ 17 二、实验内容 ................................................................................................................................ 17 三、实验代码 ................................................................................................................................ 19 四、仿真结果及说明..................................................................................................................... 27 五、实验心得与体会..................................................................................................................... 28
1. linux 基本操作 · 登陆后,桌面右键“open terminal”,输入命令“vsim”打开 Modelsim 软件; · 右键“open terminal”,输入命令“gftp”,出现窗口,进行登录连接主机向 ftp 上传文 件。 2. Modelsim 基本操作流程 建立工程 创建文件 编写程序 保存并编译 仿真 3.设计编写 D 触发器
三、D 触发器的设计
1.设计说明 带有异步复位端的 D 触发器如图所示
真值表如下 d 0 1 clk ↑ ↑ ↓ rst 1 0 0 0 q 0 0 1 Qn-1
1
该触发器有 3 个输入端口,分别为 d、clk、rst,输出为 q(可能还有 q’) ,功能描述如 下: 复位信号无效时,遇到一个上升沿,输出 q 等于输入信号 d; 复位信号有效时,输出 q 置‘0’。 也就是说,复位信号 rst 应当优于时钟信号 clk 与输入信号 d 进行考虑,在编写代码时 需要首先判断复位信号的值。 2. 实验代码 1)D 触发器的 VHDL 描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY dff IS PORT (clk,d,rst:IN STD_LOGIC; q:OUT STD_LOGIC); END ENTITY dff; ARCHITECTURE behave OF dff IS BEGIN PROCESS (rst,clk) BEGIN IF (rst='1') THEN q<='0'; ELSIF (clk'EVENT AND clk='1') THEN q<=d; END IF; END PROCESS; END ARCHITECTURE behave; 2)D 触发器程序的 testbench 激励文件 LIBRARY IEEE; use IEEE.STD_LOGIC_1164.ALL; ENTITY dff_tb IS END ENTITY dff_tb; ARCHITECTURE behave OF dff_tb IS COMPONENT dff IS PORT(d,clk,rst:IN STD_LOGIC; q:OUT STD_LOGIC); END COMPONENT dff; CONSTANT clk_period:TIME:=50 ns; SIGNAL d,clk,rst,q:STD_LOGIC; BEGIN dut:dff PORT MAP(d,clk,rst,q);