北理工VHDL实验报告

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

北理工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 stat1

stat2 = stat2 = stat3 = 其他排列顺序

stat3 stat1 stat2

(3)并行语句——进程(PROCESS)

○1语法结构:

[进程名: ]PROCESS (敏感信号列表)

[变量说明语句]

BEGIN

(顺序执行的代码)

END PROCESS [进程名];

○2PROCESS 的特点

1多进程之间是并行执行的;

2进程结构内部的所有语句都是顺序执行的;

3进程中可访问结构体或实体中所定义的信号;

4进程的启动是由敏感信号列表所标明的信号来触发,也可以用WAIT语句等待一个触发条件的成立。

5各进程之间的通信是由信号来传递的。

(4)带有异步复位端的D触发器

○1电路符号

2

R D CP Q

0 x x 0

1 x 0 保持

1 x 1 保持

1 0 上升沿0

1 1 上升沿 1

三、实验代码

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY dff IS

PORT(d,clk,rst:IN STD_LOGIC;

q:OUT STD_LOGIC);

END dff;

ARCHITECTURE behavior 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 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;

四、仿真结果

实验二步进电机控制器

一、实验目的

(1)理解两种状态机的区别

(2)熟悉两种编程风格

(3)编写BCD计数器和步进电机

二、实验原理

(1)米里型状态机和摩尔型状态机

米里(Mealy)型状态机:状态机的输出信号不仅与电路的当前状态有关,还与当

前的输入有关

相关文档
最新文档