FPGA学习笔记

FPGA学习笔记

简介

  • 所用芯片: Cyclone IV EP4CE10F17C8
  • 所用软件: Quartus-13.0.0.156 modelsim-altera

软件安装

解压

  • 分别安装3个
    FPGA学习笔记
    FPGA学习笔记
    FPGA学习笔记

或者

FPGA学习笔记
FPGA学习笔记

安装Quartus-13

FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
这里,
第 1 项为 quartus 软件主包,为必装选项;
第 2 项为 quartus 软件 64 位系统支持
包,如果你的系统是 64 位的,就需要安装此包,若为 32 位的即可不用勾选,
第 3 项为 quartus的帮助选项,建议安装。
第 4 项为 modelsim –altera 的初学者版本,如果只是基础的学习和仿真,不涉及到相当多的代码内容,安装初学者版本即可完全满足条件。
如果需要仿真很大的内容,就需要选择安装第 5 项,第 5 项使用需要 license,我们可以也可以选择破解,但是不容易破解成功,所以如果没实在的必要,就只安装初学者版本即可。
第 6 项为 dspbuilder,涉及到与 matlab 联合使用,进行相关数字信号处理的开发。
FPGA学习笔记

安装 modelsim-altera

FPGA学习笔记

FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记

Quartus 破解

FPGA学习笔记

  • 可以通过在 Quartus II 中依次点击【Tools】->【License Setup】来重新打开
    FPGA学习笔记
    FPGA学习笔记
    FPGA学习笔记
  • 用Quartus_II_13.0_x64破解器.exe破解C:\altera\13.0\quartus\bin64下的sys_cpt.dll文件(运行Quartus_II_13.0_x64破解器.exe后,直接点击“应用补丁”,如果出现“未找到该文件。搜索该文件吗?”,点击“是”,(如果直接把该破解器Copy到C:\altera\13.0\quartus\bin64下,就不会出现这个对话框,而是直接开始破解!)然后选中sys_cpt.dll,点击“打开”。安装默认的sys_cpt.dll路径是在C:\altera\13.0\quartus\bin下)。
  • 把license.dat里的XXXXXXXXXXXX 用网卡号替换
  • 在Quartus II 13.0的Tools菜单下选择License Setup,然后选择License file,最后点击OK。
  • 注意:license文件存放的路径名称不能包含汉字和空格,空格可以用下划线代替。

modelsim破解

1.安装完成后复制MentorKG.exe和patch_dll.bat到Modelsim安装目录的win32aloem文件夹下
2.编辑patch_dll.bat文件,将内容改为:(路径需修改成自己的路径)
attrib -r D:\modeltech_10.1c\win32\mgls.dll
pause
attrib +r D:\modeltech_10.1c\win32\mgls.dll
pause

3.运行CMD,输入:
CD D:\modeltech_10.1c\win32
D:
attrib -r mgls.dll
attrib -r mgls64.dll
MentorKG.exe -patch .\

4.将生成的LICENSE.TXT复制到D:\modeltech_10.1c文件夹里(自己的路径)

5.添加环境变量
变量名:MGLS_LICENSE_FILE
变量值:D:\modeltech_10.1c\LICENSE.TXT(自己的路径)
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记

安装器件库

FPGA学习笔记
FPGA学习笔记
FPGA学习笔记

FPGA学习笔记

FPGA介绍

电源供电

FPGA学习笔记

运行配置

FPGA学习笔记
FPGA学习笔记

原理图设计方式

新建工程

FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记

新建原理图文件

FPGA学习笔记
FPGA学习笔记

添加元器件

  • 根据原理图设计一个按键按下就电亮LED,松手就熄灭的逻辑电路
    FPGA学习笔记
    FPGA学习笔记
    FPGA学习笔记
    FPGA学习笔记
    FPGA学习笔记
    FPGA学习笔记

FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记

编译

FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记

仿真

FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记

FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记

下载

FPGA学习笔记

FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记

基于verilog设计

新建工程及代码

  • 新建工程
  • 新建.v文件
    FPGA学习笔记
  • 二选一多路器代码如下
module alternative(
	input a,
	input b,
	input s,
	output out
);
	assign out = s ? a : b;

endmodule 
  • 使用大学仿真,新建仿真文档
    FPGA学习笔记
  • 选择管脚
    FPGA学习笔记
  • 设置并仿真
    FPGA学习笔记

使用modelsim仿真

  • 确认安装的modelsim软件版本
  • 设置quartus软件和modelsim关联路径
  • 设计仿真激励: testbench
  • 设置nativelink
  • 运行仿真

新建.v文件用于设计仿真激励

FPGA学习笔记
仿真激励代码如下

`timescale 1ns/1ns //时间刻度
module alternative_testbench();
	//定义激励源
	reg s1,s2,s3;
	wire led;
	
	//配置模块并将激励输入模块
	alternative alternative_simulation(
		.a(s1),
		.b(s2),
		.s(s3),
		.out(led)
	);
	
	//仿真
	initial begin
		s1 = 0; s2 = 0; s3 = 0;//改变激励
		#100;//延时100个时间刻度
		
		s1 = 1; s2 = 0; s3 = 0;//改变激励
		#100;//延时100个时间刻度
		
		s1 = 0; s2 = 1; s3 = 0;//改变激励
		#100;//延时100个时间刻度
		
		s1 = 1; s2 = 1; s3 = 0;
		#100;
		
		s1 = 0; s2 = 0; s3 = 1;
		#100;
		
		s1 = 1; s2 = 0; s3 = 1;
		#100;
		
		s1 = 0; s2 = 1; s3 = 1;
		#100;
		
		s1 = 1; s2 = 1; s3 = 1;
		#100;
		$stop;
	end
endmodule 

配置软件关联
FPGA学习笔记
FPGA学习笔记

新建脚本文件
FPGA学习笔记
添加脚本文件
FPGA学习笔记
配置modelsim路径
FPGA学习笔记
开始功能仿真,(下面那个是时序仿真)
FPGA学习笔记
放大窗口
FPGA学习笔记
FPGA学习笔记
FPGA学习笔记

下载

FPGA学习笔记
加载文件
FPGA学习笔记
FPGA学习笔记

verilog语法

模块module - endmodule

  • Verilog HDL程序是由模块构成的。
  • 每个模块的内容都是嵌在module和endmodule两个语句之间。
  • 每个模块实现特定的功能。
  • 模块可以进行层次嵌套。

模块的结构

module <模块名> (<端口列表>)
<I/O说明>
<内部信号声明>
<功能定义>
endmodule
module led (
	/* 端口列表 */
	input clk,	//输入端口
	output [3:0]follow_led //输出端口4个
);
endmodule 

always过程块

  • 当敏感信号表达式的值改变时候,就执行一遍块内语句。
  • 同时always过程块是不能够嵌套使用的。

模板

always @(<敏感信号表达式>)
begin
    //过程赋值
    //if语句  
    //case语句
    //while、repeat、for语句
    //task、function调用
end
//上升沿触发,高电平清0有效
always @(posedge clk or posedge clear)
always @(posedge clk or negedge clear)
    begin
        if(!clear)//当clear==0时候,always会由事件驱动
            qout=0;
        else
            qout=in;
    end

initial过程块

  • initial语句主要面向功能模拟,通常不具有可综合性。

  • 模拟0时刻开始执行,只执行一次

  • 同一模块内的多个initial过程块,模拟0时刻开始并行执行。

  • initial与always语句一样,是不能嵌套使用的。即在initial语句中不能再次嵌套initial语句块。

initial模板

initial
begin
    语句1;
    语句2;
    ......
end

对变量和存贮器初始化

initial
begin
    reg1=0;
    for(addr=0;addr<size;addr=addr+1)
        memory[addr]=0;
end

计数器

always @(posedge clk)begin
	if(count == 25'd24_999_999)
		count <= 25'd0;
	else 
		count <= count + 1'b1;
end
上一篇:ModelSim波形图中增加信号列表


下一篇:应力波通信系统实现(四)——通信信号处理技巧