设计中心 用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