北理工—VHDL实验报告2016
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科实验报告
实验名称:VHDL语言及集成电路设计实验
实验一:带有异步复位端的D触发器
一、实验目的
(1)熟悉linux操作环境和modelsim软件环境
(2)理解时序逻辑和组合逻辑电路的区别
(3)理解并行语句和顺序语句
(4)用VHDL语言编写一个带有异步复位端的D触发器及其测试文件
二、实验原理
(1)组合逻辑和时序逻辑
组合逻辑电路当前输出的值仅取决于当前的输入,不需要触发器等具有存储能力的逻辑单元,仅仅使用组合逻辑门;
时序逻辑电路的当前输出不仅取决于当前的输入,还与以前的输入有关,这类电路中包括寄存器等元件,也包括组合逻辑电路,寄存器通过一个反馈环和组合逻辑模块相连,触发器便是属于时序逻辑电路;
(2)并行和顺序代码
从本质上讲,VHDL代码是并发执行的。只有PROCESS,FUNCTION或PROCEDURE 内的代码才是顺序执行的。当它们作为一个整体时,与其他模块之间又是并发执行的。
以下是3个并发描述语句(stat1,stat2和stat3)的代码,会产生同样的电路结构。 stat1 stat3 stat1
stat2 = stat2 = stat3 = 其他排列顺序
stat3 stat1 stat2
(3)并行语句——进程(PROCESS)
1)语法结构:
[进程名: ]PROCESS (敏感信号列表)
[变量说明语句]
…
BEGIN
…
(顺序执行的代码)
…
END PROCESS [进程名];
2) PROCESS 的特点
多进程之间是并行执行的;
进程结构内部的所有语句都是顺序执行的;
进程中可访问结构体或实体中所定义的信号;
进程的启动是由敏感信号列表所标明的信号来触发,也可以用WAIT语句等待一个触发条件的成立。
各进程之间的通信是由信号来传递的。
(4)带有异步复位端的D触发器
三、实验代码
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY dff IS
PORT(d,clk,rst:IN STD_LOGIC;
q:OUT STD_LOGIC);
END dff;定义entity dff
ARCHITECTURE behavior OF dff IS BEGIN
PROCESS(rst,clk)
BEGIN
IF(rst='1') THEN
q<='0';如果复位信号有效,q为0
ELSIF(clk'EVENT AND clk='1') THEN q<=d;上升沿触发且,q<=d
END IF;
END PROCESS;结束进程
end ARCHITECTURE behavior;
测试文件:
library IEEE;
use ieee.std_logic_1164.all;
entity dff_tb is
end dff_tb;
architecture tb_behavior of dff_tb is component dff
port(
d,rst,clk: in std_logic;
q: out std_logic);
end component;
constant clk_period:time:=50 ns;
signal d,clk,q,rst:std_logic;
begin
dut:dff port map(d=>d,clk=>clk,rst=>rst,q=>q); clk_gen:process begin
clk<='0';
wait for clk_period/2; clk<='1';
wait for clk_period/2; end process;
d_gen:process
begin
wait for 100 ns;
d<='1';
wait for 100 ns;
d<='0';
end process;
rst_gen:process
begin
rst<='1';
wait for 150 ns;
rst<='0';
wait for 500 ns;
rst<='1';
wait for 150 ns; wait;
end process;
end tb_behavior;
四、实验结果
五、实验心得
第一次使用此软件,略有陌生,耗费时间稍久,因为之前用过的quartusii9.0不必使用tb文件,所以第一次实验刚开始并没有明白tb文件的用途,上网查找资料之后才明白过来,不过好在程序简单,顺利完成实验。
实验二步进电机控制器
一、实验目的
(1)理解两种状态机的区别
(2)熟悉两种编程风格
(3)编写BCD计数器和步进电机
二、实验原理
(1)米里型状态机和摩尔型状态机
米里(Mealy)型状态机:状态机的输出信号不仅与电路的当前状态有关,还与当前的输入有关
摩尔(Moore)型状态机:状态机的当前输出仅仅由当前状态决定。
(2)有限状态机设计流程: