设计中心
用VHDL语言开发FPGA的完整流程
1.文本编辑:用任何文本编辑器都可以进行,也可以用专用的
HDL编辑环境。通常VHDL文件保存为.vhd文件
2.功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑
功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,
只在布线完成以后,进行时序仿真)
3.逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综
合成最简的布尔表达式。逻辑综合软件会生成.edf(edif)的
EDA工业标准文件。
4.布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,
即把设计好的逻辑安放到PLD/FPGA内。
5.时序仿真:需要利用在布局布线中获得的精确参数,用仿真软
件验证电路的时序。(也叫后仿真)
6.编程下载:确认仿真无误后,将文件下载到芯片中
设计中心
Active-HDL
Creating a Behavioral Design
设计中心
Active-HDL4.2
FPGA Express
Foundation
设计中心
设计中心
设计中心
设计中心
FPGA Express
设计中心
设计中心
设计中心
设计中心
设计中心
设计中心
设计中心
设计中心
设计中心
implementation
设计中心
Active-HDL4.2
FPGA Express
Foundation
设计中心
Design Manager
设计中心
Flow engine
Timing analyzer
Floorplanner
PROM file formatter
JTAG Programmer
Hardware Debugger
FPGA Editor
*.bit
*.ucf
*.mcs
设计中心
.EDF .NGD .NCD .NCD .BIT
.XNF
网表合并、编译逻辑配置映射到
目标元件
为FPGA布局布线BIT流目标文件配置
设计中心
? NCD (netlist circuit description)
? NGD (native generic database)
? BIT (a binary file,configuration bitstream)
设计中心
Floorplanner
底层编辑器
设计中心
PROM file formatter
可编程ROM文件格式化生成器
生成*.mcs文件
MCS (Intel’s MCS-86 format)
设计中心
设计中心
设计中心
基于查找表技术(Look-Up table)技术
?包含SRAM工艺的FPGA(如Altera的所有
FLEX,ACEX,APEX系列,Xilinx的
Sparten,Vertex),10,000门以上的大规模
PLD/FPGA。由于SRAM工艺的特点,掉
电后数据会消失。
? PROM,实时配置
设计中心
设计中心
设计中心
实验开发板芯片选型
? FPGA:
Xilinx SpartanXL S10XL_PC84 -4
? PROM:
Xilinx XC18V02_PC44
双列直插式封装(DIP)
有引线载体(LCC)
四方型扁平封装(QFP)
针栅阵列(PGA)、球栅阵列(BGA)
芯片尺寸封装(CSP)
设计中心
FPGA验证实验
?数字音频功放的FPGA下载及试听验证
?普通计数器的FPGA验证
?计数器改进设计及其FPGA验证
设计中心
实验一、数字音频功放
FPGA下载及试听验证
?FPGA:﹡.bit
?PROM:﹡.mcs
设计中心
设计中心
实验二、普通计数器的FPGA验证
设计中心
十进制加1计数器
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;
clr qa
en qb
i qc
qd
U1
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";
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;
设计中心
设计中心
计数器
输出
to
LED
(共阳)
case M is
when "0000" => LED <= "1000000"; --0
when "0001" => LED <= "1111001"; --1
when "0010" => LED <= "0100100"; --2
when "0011" => LED <= "0110000"; --3
when "0100" => LED <= "0011001"; --4
when "0101" => LED <= "0010010"; --5
when "0110" => LED <= "0000010"; --6
when "0111" => LED <= "1011000"; --7
when "1000" => LED <= "0000000"; --8
when "1001" => LED <= "0010000"; --9
when others => LED <= "0000110"; --E
end case;
设计中心
按键弹跳现象
?手动按键的抖动不可避免
?按键信号稳定前后往往出现不该有的噪声
?弹跳信号现象:
?如果这样的信号直接输入计数器,结果可
能发生计数超过1次以上的误动作
设计中心
实验三、计数器改进设计及其FPGA验证
设计中心
微分电路
?将原本可能超过一个时钟周期的信号A,微分
成恰好只有一个周期。微分信号三种形式:
上升沿微分、下降沿微分、升降沿微分
D Q
CP
A
Q1
CP
D Q
CP
Q2
UP_OP
DN_OP
DL_OP
设计中心
设计中心
设计中心
防弹跳电路
?相邻两次采样数据相同,则认为信号稳
定有效,输出该值;否则为非稳定信号,
输出保持原值不变。
采样信号CP
设计中心
设计中心
设计中心
防弹跳电路+微分电路
设计中心
设计中心
采样频率的提出
采样信号CP
设计中心
采样频率的选定
?人的按键速度至多是10次,即一次按键时
间100ms,有效按下时间可估算50ms。
?若取采样信号CP周期T=8ms,则一次按
键可采样6次(8ms×6次≈50ms)。
?对于不稳定噪声,一般在4ms以下,则至
多被采样到1次。
?即采样信号CP频率可选择f =1/T=125 Hz