背景
最近在做毕设,选了一个关于FPGA的课题。虽然在大学期间学了VHDL,QuartusII软件,但在拿到这个题目的时候还是感觉一脸懵逼,才开始对FPGA真正的了解。
FPGA
- FPGA是什么?
FPGA(field programble gate array),现场可编程逻辑门阵列;
就是通过编程可以改变内部结构的芯片; - 优势:与ASIC(专用集成芯片)相比,可以减少时间成本和人力成本,减少一个芯片再生产的成本和规模;
- 应用领域:
通信/算法/嵌入式/安防监控/工业自动化; - 主要FPGA厂商
1)xilinx 开发平台ISE
2)Altera 开放平台QuartusII
3)Actel 开放平台libero
4)Atmel
ISE
由于vivado的诞生,ISE停留在了ISE 14.7,但是ISE 14.7是支持spartan 6的。
ISE使用流程
1)创建工程
file——new project(工程路径不能出现中文)
芯片选型:
family芯片类型/device芯片编号/package封装
preferred language:选择VHDL或者verilog进行编程
接着点击next,finish创建工程结束。
2)添加源代码
点击所选的芯片,右键,点击new source。
用VHDL编程就选择vhdl module
用verilog就选择verilog module
输入输出管脚分配;然后finish进入如下界面
开始编写结构体部分。
本示例用vhdl编写分频器做示范
然后点击左下角进行综合,check syntax(检查语法)。没错的话进行仿真
3)仿真
左上角implementation切换为simulation
选中你的behavioral文件,右键添加new source
如果是vhdl文件,选择vhdl test bench;如果是Verilog,选择verilog test fixture。
在本文这儿创建vhdl test bench,代码如下
--------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 10:41:30 03/06/2020
-- Design Name:
-- Module Name: E:/laji/baud/baud_tb.vhd
-- Project Name: baud
-- Target Device:
-- Tool versions:
-- Description:
--
-- VHDL Test Bench Created by ISE for module: baud
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
-- Notes:
-- This testbench has been automatically generated using types std_logic and
-- std_logic_vector for the ports of the unit under test. Xilinx recommends
-- that these types always be used for the top-level I/O of a design in order
-- to guarantee that the testbench will bind correctly to the post-implementation
-- simulation model.
--------------------------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--USE ieee.numeric_std.ALL;
ENTITY baud_tb IS
END baud_tb;
ARCHITECTURE behavior OF baud_tb IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT baud
PORT(
clkin : IN std_logic;
rst : IN std_logic;
clkout : OUT std_logic
);
END COMPONENT;
--Inputs
signal clkin : std_logic := '0';
signal rst : std_logic := '0';
--Outputs
signal clkout : std_logic;
-- Clock period definitions
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: baud PORT MAP (
clkin => clkin,
rst => rst,
clkout => clkout
);
-- Clock process definitions
-- Stimulus process
-- hold reset state for 100 ns.
process
begin
rst<='1';
wait for 100 ns;
rst<='0';
wait for 5 ms;
end process;
process
begin
clkin<='1';
wait for 100 ns;
clkin<='0';
wait for 100 ns;
end process;
END;
然后点击左下角behavioral check syntax,语法检查;
然后点击simulate behavior model,查看仿真结果;
4)引脚分配
Implementation-user constraints-I/O PIN planning post
查手册
生成ucf文件
5)实现implementation design (翻译,映射,布线布局)
Generate programming files 生成bit流文件。
6)下载验证
后面的步骤还没买开发板,所以暂时没有图。
上面就是xilinx使用ise进行开发的流程。