VLSI 设计的 FPGA 验证

更新时间:2023-07-26 21:54:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VLSI 设计的 FPGA 验证

VLSI设计的FPGA验证

标 准 实 验 报 告

实验一:数字功放的FPGA下载实验 实验二:计数器的FPGA验证实验

实验三:计数器改进设计及其FPGA验证实验

电子科技大学·《电子设计自动化技术》课程组

VLSI 设计的 FPGA 验证

实验(一)标准实验报告

实验名称:数字音频攻放的FPGA下载与试听验证实验

实验目的:通过数字音频功放的FPGA下载和试听,体验FPGA原型验证的过

程,学会FPGA下载操作,感性地认识基于VHDL的用户设计在FPGA中物理实现的真实效果。

实验原理:参见《VLSI设计的FPGA验证实验指导书》 实验步骤及实验记录: 1. 步骤一:实验准备

FPGA开发板(主芯片型号:XCS10XL)

数字音频功放的目标下载文件(audio.bit、audio.mcs) 2. 步骤二:连接好FPGA开发板

用JTAG下载线将FPGA开发板与计算机的并口连接好。 3. 步骤三:FPGA下载就绪状态设置

用跳线块将FPGA开发板上的program引脚与GND短接。 4. 步骤四:FPGA开发板上电

将直流稳压电源输出电压调到3.3V后,与FPGA开发板连接好,上电。 5. 步骤五:启动下载工具JTAG programmer

操作方法为:程序 →Xilinx Foundation Series 3.1i → Accessories → JTAG programmer。

6. 步骤六:初始化下载链路

下载工具JTAG programmer找到了目标器件FPGA(型号XCS10XL)和PROM(型号为:XC18V02)。 7. 步骤七:PROM配置项设置

加载PROM配置文件(audio.mcs),选择PROM器件封装型号(xc18v02_pc44)。

8. 步骤八:FPGA配置项设置

加载FPGA的目标下载bit流文件(audio.bit),选择FPGA器件封装型号(XCS10XL_PC84)。

VLSI 设计的 FPGA 验证

9. 步骤九:运行下载

PROM器件xc18v02_pc44的Operation选项选择为program,FPGA器件XCS10XL_PC84的Operation选项选择为Bypass。

点击Execute按钮运行下载,下载成功。 10. 步骤十:试听测试

取下FPGA开发板上的program与GND短接的跳线块,FPGA进入运行状态;接上耳机试听音乐播放,听到了播放的音乐。

实验结论与分析:

数字音频攻放的目标下载文件成功下载到了FPGA中,通过耳机试听到了播放的音乐。

VLSI 设计的 FPGA 验证

实验(二)标准实验报告

实验名称:LED数码显示型计数器的FPGA验证实验

实验目的: 通过VHDL源程序编写与仿真、FPGA综合、FPGA物理实现及FPGA

下载、板级测试等全过程的亲身体验,掌握VLSI前端设计和FPGA验证的基本方法,熟悉FPGA开发板的应用。

实验原理:参见《VLSI设计的FPGA验证实验指导书》 实验步骤及实验记录:

1. 第一步:计数器的VHDL编程与源代码录入

① 计数器的VHDL源代码: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY count10en IS

PORT(i, clr, en : IN STD_LOGIC; qa, qb, qc, qd : OUT STD_LOGIC); END count10en;

ARCHITECTURE rtl OF count10en IS

SIGNAL count_4 : STD_LOGIC_VECTOR(3 downto 0); BEGIN process(i, clr) begin

if (clr='1') then

count_4 <= "0000";

elsif (i'event and i='1') then if (en='1') then

if (count_4="1001") then

count_4 <= "0000";

VLSI 设计的 FPGA 验证

else

count_4 <= count_4 + 1;

end if;

end if; end if; end process; qa<=count_4(0); qb<=count_4(1); qc<=count_4(2); qd<=count_4(3); END rtl;

② LED数码显示驱动模块的源代码: library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity display is

port( I0, I1, I2,I3 : in STD_LOGIC;

O_A, O_B, O_C, O_D, O_E, O_F, O_G : out STD_LOGIC);

end display;

architecture display of display is

signal M : STD_LOGIC_VECTOR(3 downto 0); signal O : STD_LOGIC_VECTOR(6 downto 0); begin

M <= I3&I2&I1&I0;

PROCESS(M) BEGIN

case M is

when "0000" => O <= "1000000"; --0 when "0001" => O <= "1111001"; --1 when "0010" => O <= "0100100"; --2

VLSI 设计的 FPGA 验证

when "0011" => O <= "0110000"; --3 when "0100" => O <= "0011001"; --4 when "0101" => O <= "0010010"; --5

when "0110" => O <= "0000010"; --6 when "0111" => O <= "1011000"; --7 when "1000" => O <= "0000000"; --8 when "1001" => O <= "0010000"; --9 when others => O <= "0000110"; --E

end case; end process; O_A <= O(0); O_B <= O(1); O_C <= O(2); O_D <= O(3); O_E <= O(4); O_F <= O(5);

O_G <= O(6);

end display;

2. 第二步:VHDL程序功能仿真

仿真工具选择:Active-HDL。 仿真波形如下图所示:

VLSI 设计的 FPGA 验证

3. 第三步:VHDL逻辑综合

综合工具选择:FPGA Express。 综合后得到的电路图如下图所示:

4. 第四步:FPGA物理实现

物理实现工具选择:Xilinx Foundation的Design Manager。 物理实现的管脚分配文件如下图所示:

5. 第五步:FPGA下载

下载工具选择:Xilinx Foundation的JTAG programmer。

用跳线块将FPGA开发板上的program引脚与GND短接,使FPGA处于下载就绪状态。

FPGA芯片的配置文件:counter_LED.bit

VLSI 设计的 FPGA 验证

PROM芯片的配置文件:counter_LED.mcs 6. 第六步:FPGA测试

下载成功后,取下program引脚短接跳线块,即可进行测试。 测试方法:手动操作按键,观测LED数码管。

实验结论与分析:

通过观测发现,LED数码能有效显示计数器的计数值,但一次手动按键操作有多次误计数的不稳定现象。说明本设计的可靠性较差,需要作进一步改进设计。

VLSI 设计的 FPGA 验证

实验(三)标准实验报告

实验名称:改进型计数器设计与FPGA验证实验

实验目的:通过改进型计数器设计使学生认识到工程设计实践中稳定性、可靠性

设计的必要性,通过FPGA实物验证使学生充分认识去抖动电路的抗噪效果。并养成在完成功能设计的同时兼顾性能设计的良好习惯。

实验原理:参见《VLSI设计的FPGA验证实验指导书》 实验步骤及实验记录:

1. 第一步:分析实验二的计数器计数值不稳定的原因

实验二计数器实验中计数值不稳定现象是:LED显示数据有乱跳的现象。 引起不稳定现象的原因是手动操作按键时有“抖动”噪声。 要消除抖动噪音,可以引入去抖动电路。

改进后的模块框图如下,从图中可以很清楚它们的连接关系。

其中增加的弹跳消除模块为图中的debounce模块,端口包括: clk:系统时钟端口 touch:键盘输入端口 clr:清零复位端口

push_out:进行完噪声消除以后的键盘输入信号。 2.第二步:去抖动电路设计

去抖动电路基本思路:引入采样时钟,在对输入信号采样时,当相邻两次采样数据相同,则认为信号稳定有效,输出该值;否则当成非稳定信号,去抖输出保持原值不变。

去抖动电路源程序:

VLSI 设计的 FPGA 验证

--content definition of component "debounce" library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; --io signal declaraction entity debounce is

port(clk: in std_logic; --basic clock input

clr:in std_logic;

touch: in std_logic; --push button signal

push_out: out std_logic); --cleared push botton signal

end debounce;

architecture arch of debounce is

signal sample: std_logic;

--declaraction of self_built sampling pulse from clock begin

sampling_signal: block --input clk --output sample

signal delay:std_logic; --one_step delay

signal q: std_logic_vector(4 downto 0); --osc/2^5=32hz(31.25ms)

begin

process(clk) begin

if clr='1' then q<="00000"; delay<='0';

elsif rising_edge(clk) then

delay<=q(4); q<=q+1;

VLSI 设计的 FPGA 验证

end if;

sample<=q(4) and not delay; --leading_edge differentiating

end process; end block sampling_signal; --cleared push botton signal generation cleared_push:block --input:clk,sample,touch --output:push_out

signal dff0,dff1:std_logic; --two_step delay ff signal push:std_logic; --output of rsff for push signal signal q1,q2:std_logic; begin

process(clk) begin

if clr='1' then

dff0<='0'; dff1<='0'; push<='0';

elsif rising_edge(clk) then

if sample='1' then dff1<=dff0;

dff0<=touch;

push<=dff0 and dff1; end if; end if; end process; process(clk) begin

if clr='1' then

q2<='0';

VLSI 设计的 FPGA 验证

q1<='0';

elsif rising_edge(clk) then

q2<=q1; q1<=push; end if;

push_out<=q1 and not q2;

end process;

end block

cleared_push; end arch;

3.第三步:采样时钟电路设计

FPGA开发板上晶振为33MHz,将该时钟信号进行4分频后得到8.25MHz的采样时钟。

4. 第四步:改进型计数器的VHDL仿真

仿真工具选择:Active-HDL 仿真波形如下图所示:

由时钟产生一个取样信号,然后对键盘输入的信号进行取样。只有在两次取样均能采到信号时,才算一次输入,否则不被计入。

如上图可见,当输入信号(touch)保持200ns时,能被有效识别,其它的都没有被识别。达到了消除噪声的目的。 5. 第五步:VHDL程序的综合

综合工具选择:FPGA Express。 综合后形成的网表文件:counter_EN.edf 6. 第六步:FPGA物理实现及下载

物理实现及其下载工具选择:Xilinx Foundation 管脚分配文件:counter_EN.ucf

VLSI 设计的 FPGA 验证

用跳线块将FPGA开发板上的program引脚与GND短接,使FPGA处于下载就绪状态,选择目标下载文件完成下载。

FPGA目标下载文件:counter_EN.bit PROM目标下载文件:counter_EN..mcs 7. 第七步:FPGA测试

下载成功后,取下program引脚短接跳线块,即可进行测试。 测试方法:手动操作按键,观测LED数码管。

实验结论与分析:

通过观测发现,LED数码能有效显示计数器的计数值,且一次手动按键操作只发生一次计数,计数操作稳定。

通过与实验二作对比发现:引入去抖动设计后计数器的计数效果得到了明显改进。

本文来源:https://www.bwwdw.com/article/l51m.html

Top