ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

FPGA学习笔记

2020-06-02 11:07:23  阅读:287  来源: 互联网

标签:仿真 FPGA s3 initial modelsim 笔记 学习 100 安装


FPGA学习笔记

简介

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

软件安装

解压

  • 分别安装3个
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

或者

在这里插入图片描述
在这里插入图片描述

安装Quartus-13

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

安装 modelsim-altera

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Quartus 破解

在这里插入图片描述

  • 可以通过在 Quartus II 中依次点击【Tools】->【License Setup】来重新打开
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 用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介绍

电源供电

在这里插入图片描述

运行配置

在这里插入图片描述
在这里插入图片描述

原理图设计方式

新建工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新建原理图文件

在这里插入图片描述
在这里插入图片描述

添加元器件

  • 根据原理图设计一个按键按下就电亮LED,松手就熄灭的逻辑电路
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编译

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

仿真

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下载

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于verilog设计

新建工程及代码

  • 新建工程
  • 新建.v文件
    在这里插入图片描述
  • 二选一多路器代码如下
module alternative(
	input a,
	input b,
	input s,
	output out
);
	assign out = s ? a : b;

endmodule 
  • 使用大学仿真,新建仿真文档
    在这里插入图片描述
  • 选择管脚
    在这里插入图片描述
  • 设置并仿真
    在这里插入图片描述

使用modelsim仿真

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

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

在这里插入图片描述
仿真激励代码如下

`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 

配置软件关联
在这里插入图片描述
在这里插入图片描述

新建脚本文件
在这里插入图片描述
添加脚本文件
在这里插入图片描述
配置modelsim路径
在这里插入图片描述
开始功能仿真,(下面那个是时序仿真)
在这里插入图片描述
放大窗口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下载

在这里插入图片描述
加载文件
在这里插入图片描述
在这里插入图片描述

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

标签:仿真,FPGA,s3,initial,modelsim,笔记,学习,100,安装
来源: https://blog.csdn.net/m0_38139533/article/details/106467032

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有