编码电路设计报告
目 录
一、设计任务
二、题目分析与整体构思
三、硬件电路设计
四、程序设计
五、心得体会
一. 设计任务
在数字系统中,编码指将特定的逻辑信号编为一组二进制代码。能够实现编码功能的逻辑部件称为编码器。一般而言,M 个不同的信号,至少需要N 位二进制数编码。M 和N 之间满足2N≥M 的关系。在实际工作中,同时有多个输入被编码时,必须根据轻重缓急,规定好这些控制对象允许操作的先后次序,即优先识别。能够识别信号的优先级并进行编码的逻辑部件称为优先编码器。
8-3 线优先编码器是常见编码器之一,它有8 个输入端、3 个二进制码输出端,作用是将输入X0~X7 八个状态分别编成842l 码的反码输出,优先级分别从X7~ X0 递减。
使用VHDL硬件描述语言的设计方法和思想设计8-3 线优先编码器。用ISE 软件运行仿真,观察波形图,并将程序下载到FPGA,验证编码器的逻辑功能。
使用VDHL语言实现8-3 线优先编码器,操作简单、易懂,将8个拨码开关的状态作为输入,3个LED显示高低电平作为输出,很容易理解编码器的工作原理。
二. 题目分析与整体构思
题目要求使用 VHDL 语言设计8-3 线优先编码器。用ISE 软件运行仿真,观察波形图,并将程序下载到FPGA,验证编码器的逻辑功能。用开发板EXCD-1上的8个拨码开关的状态作为输入,3个LED显示高低电平作为输出,通过改变8个拨码开关的开关来控制3个LED的输出状态。
三.硬件电路设计
SW6 SW7
SW5
SW2
SW1
SW0 SW4
SW3 D2
D1
D0
拨码开关SW7~SW0输入,D0~D2输出高低电平,通过改变8个拨码开关的开关来控制3个LED的输出状态。
四. 程序设计
(1)创建工程
制定工程名,工程路径以及顶层设计所使用的输入方式,此设计我们选择硬件描述语言作为顶层设计的输入方式HDL。
(2)选择目标器件
(3)创建新源文件
这里我们选择“VHDL Module”,进行新源文件模块定义,所定义的内容是所要设计模块的实体说明,即模块的端口说明。本实验所要实现的是编码器的设计,设定SW7~SW0 为六个输入端口,共3 个输出信号D(0)~D(2),选择输出为总线模式(Bus),Msb、Lsb 分别表示最大端口号与最小端口号(注意:选择端口方向in、out、inout)。
检查模块端口定义是否正确。
(4)添加源文件
(5)完成工程创建
在工程设置统计窗口,可以看到对工程的描述总结,目标器件的描述,以及新建源文件
的总结,此工程创建完成。
(6)设计输入
包括库的声明,包的声明,完整的实体说明以及结构体框架。使用VHDL 语言设计完善基
本编码器电路设计,拨动开关SW0~SW1 作为六个输入端,LED0~LED2 作为输出显示,以观察实验结果。
1. LED 与编码器电路对应关系
SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0 D2 D1 D0
0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 × 0 0 1 SW1 SW2 SW5 SW4 SW3 SW6 SW7
D0 D1 D2 SW0
0 0 0 0 0 1 × × 0 1 0
0 0 0 0 1 × × × 0 1 1
0 0 0 1 × × × × 1 0 0
0 0 1 × × × × × 1 0 1
0 1 × × × × × × 1 1 0
1 × × × × × × × 1 1 1
其中D2~D0 中,“0”为点亮,“1”为熄灭。
(7) 仿真设计
代码输入完成后,需要对设计进行波形仿真。
有添加波形仿真文件,仿真波形文件时钟设置,设置输入信号波形和波形仿真这几个步骤。
(8) 设计综合
Xilinx 综合工具对设计进行行为级综合,将系统直接从行为级描述综合为寄存器传输级
描述。综合过程中主要完成三个步骤:首先为语法检查,检查设计文件语法是否有错误;其
次为编译过程,翻译和优化HDL 代码,将其转换为综合工具可以识别的元件序列;最后为
映射过程,将这些可识别的元件序列转换为可识别的目标技术的基本元件。
Synthesis 工具即用来完成设计综合,它可完成以下任务查看综合报告(View Synthesis
Report)、查看RTL 原理图(View RTL Schematic)、查看技术原理图(Vies Technology
Schematic)、检查语法(Check Syntax)、产生综合后仿真模型(Generate Post-Synthesis
Simulation Model)。
(9). 引脚分配
8 线3 线优先编码器的引脚分配
信号名及对应板上资源 信号名 FPGA 引脚分配
输入信号(SW0) x<0> P43
输入信号(SW1) x<1> P32
输入信号(SW2) x<2> P26
输入信号(SW3) x<3> P20
输入信号(SW4) x<4> P14
输入信号(SW5) x<5> P6
输入信号(SW6) x<6> P204
输入信号(SW7) x<7> P194
输出信号(D0) y<0> P33
输出信号(D1) y<1> P31
输出信号(D2) y<2> P30
(10)设计实现
设计综合完成后,即进行设计实现(Implement)。实现过程主要分为三个步骤:翻译逻
辑网表(Translate)、映射到器件单元(Map)、布局布线(Place&Route)。在处理子窗口,
鼠标双击Implement Design,信息输出窗口会显示设计信息。
(11) 生成下载文件及目标板配置
处理子窗口中双击Generate Programming File,生成可编程文件。而后双击Configure Target
Device,进行目标板配置。
开发板正确连接,并上电后,可在ISE 用户区看到两个可配置芯片,分别为4Mb 的平台flash
与FPGA xc3s500e台flash 与FPGA xc3s500e。同时出现平台Flash 配置文件指定窗口,绿色芯片表示当前进行配置的芯片。该设计我们选择对FPGA xc3s500e 进行配置,平台Flash 配
置窗口点击Cancel。选定FPGA 芯片图标,右键单击选择program,在随后弹出的“Device
Programming Properties”对话框直接点击ok,对FPGA 进行编程。文件下载成功,则显示“Program Succeeded”可通过开发板观察相应实验现象。至此,使用ISE 软件设计基本逻辑门电路已经完成。
(12)程序代码
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity priority_encoder8_3 is
Port ( x : in STD_LOGIC_VECTOR (7 downto 0);
y : out STD_LOGIC_VECTOR (2 downto 0));
end priority_encoder8_3;
architecture Behavioral of priority_encoder8_3 is
begin
process(x)
begin
y <= "000";
for i in 0 to 7 loop
if(x(i)='1') then
y <= conv_std_logic_vector(i,3);
end if;
end loop;
end process;
end Behavioral;
五.调试
输入端SW7~SW0为: 0 0 0 0 0 0 0 1 ,输出D0~D2为: 000;
输入端SW7~SW0为: 0 0 0 0 0 0 1× ,输出D0~D2为: 001;
输入端SW7~SW0为: 0 0 0 0 0 1×× ,输出D0~D2为: 010;
输入端SW7~SW0为: 0 0 0 0 1××× ,输出D0~D2为: 011;
输入端SW7~SW0为: 0 0 0 1×××× ,输出D0~D2为: 100;
输入端SW7~SW0为: 0 0 1 ××××× ,输出D0~D2为:101;
输入端SW7~SW0为: 0 1×××××× ,输出D0~D2为: 110;
输入端SW7~SW0为: 1××××××× ,输出D0~D2为:111;
调试结果:编码器成功实现。
6.总结
通过这次设计我们了解并掌握VHDL硬件描述语言的设计方法和思想,使自己能将已学过的数字电子系统设计、VHDL 程序设计等知识综合运用于电子系统的设计中,基本掌握了运用VHDL 设计电子系统的流程和方法,加强和培养了自己对电子系统的设计能力。我们也了解了VHDL的一些知识,VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL语言作为一种国际标准化的硬件描述语言,自1987年获得IEEE批准以来,经过了1993年和2001年两次修改,至今已被众多的国际知名电子设计自动化(EDA)工具研发商所采用,并随同EDA设计工具一起广泛地进入了数字系统设计与研发领域,目前已成为电子业界普遍接受的一种硬件设计技术。
VHDL语言用于数字系统设计的主要优点是:
(1)允许用软件描述系统的硬件结构,即描述系统怎样分解为子系统和子系统间怎样互连。
(2)允许使用类似常用编程语言形式的系统功能指标。
(3)允许对系统设计在制造前以低廉的花费进行性能模拟验证。
(4)允许设计的详细结构从更抽象的性能指标出发沿自顶向下的路线分层次地进行综合。
(5)允许设计重用和在可编程ASIC器件上生成设计芯片。