FPGA开发

 Quartus13.0使用

编译下载:

添加引脚:


# ----------------   LED   ---------------- #
set_location_assignment PIN_K2 -to led_out[11]
set_location_assignment PIN_J1 -to led_out[10]
set_location_assignment PIN_J2 -to led_out[9]
set_location_assignment PIN_L1 -to led_out[8]
set_location_assignment PIN_L2 -to led_out[7]
set_location_assignment PIN_K1 -to led_out[6]
set_location_assignment PIN_N1 -to led_out[5]
set_location_assignment PIN_N2 -to led_out[4]
set_location_assignment PIN_L3 -to led_out[3]
set_location_assignment PIN_P2 -to led_out[2]
set_location_assignment PIN_P1 -to led_out[1]
set_location_assignment PIN_N3 -to led_out[0]# ----------------   clk and  rst  ---------------- #
set_location_assignment PIN_E1 -to sys_clk
set_location_assignment PIN_D1 -to sys_rst_n# ----------------   clk and  rst  ---------------- #
set_location_assignment PIN_E1 -to sys_clk
set_location_assignment PIN_D1 -to sys_rst_n# --------------------   KRY  ------------------- #
set_location_assignment PIN_R3 -to key1
set_location_assignment PIN_P3 -to key2
set_location_assignment PIN_D1 -to key3
set_location_assignment PIN_K1 -to led3# --------------------   KRY  ------------------- #
set_location_assignment PIN_K16 -to rx
set_location_assignment PIN_L16 -to tx

字体调整:

文件转换:

一.Verilog 代码

数值种类

标识符:

数据类型:

  寄存器变量 

   reg   [ 31 :0]    cnt;

           reg:   类型

                [ 31 :0]   高位和低位,代表32位宽,没有时表示位宽为1

                变量名:  后面要加分号

  

线网数据类型:

wire

参数类型:

类似C语言里面的 #define  PI  3.14

用于定义状态   运行参数

parameter size=8;
parameter a=4,b=6;
parameter clock=a+b;

运算符:

程序框架:
注释:

关键字:

程序框架:

module 模块开始   模块名字     (a,b)  ;   模块参数 ,结束加分号

intput a,b;                             //输入信号

output c,d;                             //输出信号

assign c = a|b;                       //assign复制语句

assign d = a&b;                      //会生成实际电路(可综合模块(不可综合模块不能生成电路)

endmodule   模块结束

模块调用:

结构语句:

inital  初始化语句

always  循环执行

触发方式:

沿触发:   通常用来表示时序逻辑

posedge 上升沿触发

negedge 下降沿触发

or 链接多个事件,只要有一个条件就执行一次

电平触发:   通常用来表示组合逻辑

等号右边的数字要全部添加到列表里面,可以用 * 来替代,只要有一个电平发生,就会执行

组合逻辑:输出只取决与改时刻的输入。

时序逻辑:输出不仅取决与当前状态还与上一个状态有关。记忆功能

赋值语句:

阻塞赋值   =  :     赋值从上到下一条条赋值语句执行。顺序执行,和C语言一样。

非阻塞赋值  <= : 每条赋值语句同时执行,所有赋值语句同时执行。它会将所有右边全部计算完后再同时赋值给左边。只能给寄存器类型赋值。

组合逻辑和时序逻辑判断:

时序逻辑:就是有一个D触发器,要随着时钟周期触发:  always@(posedge clk or negedge res_n) ,但是组合逻辑是通过电平状态来判断的:always@( * )或always@(a or b or ...)

所以再时序逻辑里面,一个时钟到来,要执行所有的事情,赋值是要用  <= 赋值,一次将全部的值赋过去。

而组合逻辑,当触发后依次执行一次,所以用  = 赋值   ,执行一次。

条件语句:

if

case

状态机:

概述:

实现顺序逻辑,实现不同状态进行切换。

状态机设计:

例子:

尽量使用时序逻辑:

语法注意:

1. 端口加 wire 还是reg? 

1. 用这种方式赋值  assign  led_out = ,要加 wire 类型。

2.模块的输入输出端口类型都默认为wire型

3.变量放在begin……end之内必须使用reg变量

4.在initial语句中使用必须使用reg变量

6.如果output作为过程赋值语句的左值,则应该用reg类型;如果output作为连续赋值语句的左值,则应该用wire类型

7. 输入的端口都不用写reg,因为值是外面给的,只有输出要区分是否写reg

8.reg信号一般情况下代表寄存器,wire信号定义, wire信号就是硬件连线
 

3. 函数和函数调用:

1.在Verilog中,输入值和输出值全部在模块端口进行定义

二.代码实践:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/462003.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web课程学习笔记--JavaScript操作DOM常用的API

JavaScript操作DOM常用的API 1 什么是DOM 文档对象模型 (DOM) 是HTML和XML文档的编程接口。它提供了对文档的结构化的表述&#xff0c;并定义了一种方式可以使从程序中对该结构进行访问&#xff0c;从而改变文档的结构&#xff0c;样式和内容。 文档对象模型 (DOM) 是对HTML文…

RK3568平台 Regmap子系统

一.Regmap API 简介 Linux 下使用 i2c_transfer 来读写 I2C 设备中的寄存器&#xff0c;SPI 接口的话使用 spi_write/spi_read 等。I2C/SPI 芯片又非常的多&#xff0c;因此 Linux 内核里面就会充斥了大量的 i2c_transfer 这类的冗余 代码&#xff0c;再者&#xff0c;代码的复…

那些 C语言指针 你不知道的小秘密 (3)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能…

vscode开发FPGA(0)--windows平台搭建

一、从官网下载安装VScode Download Visual Studio Code - Mac, Linux, Windows 二、安装配置插件 1. 安装Chinese&#xff08;simplified&#xff09;中文汉化包 2.安装Verilog-HDL/systemVerilog插件(支持verilog语法) 3.配置CTags Support插件(支持代码跳转) 1)在github下…

公众号天气推送源码,附带教学,自动版本推送带各种模板

公众号天气推送系统介绍 主要功能特点&#xff1a; 实时天气查询&#xff1a;用户可以通过公众号随时查询当前位置的实时天气状况&#xff0c;包括温度、湿度、风速、天气状况等详细信息。定时推送服务&#xff1a;系统支持自定义时间段的天气推送&#xff0c;确保用户在出门…

【Fabric.js】监听画布or元素的点击、选中、移动、添加、删除销毁、变形等各事件

在fabric使用过程中&#xff0c;如果想要玩各种花样&#xff0c;那么fabric的事件监听是一定、必须、肯定要掌握&#xff01;&#xff01;&#xff01; 例子就用vue项目组件里的代码&#xff0c;fabric的使用跟vue、react、angular之类的框架都没任何关系&#xff01; 并且本de…

Git基础命令,分支,标签的使用【快速入门Git】

Git基础命令&#xff0c;分支&#xff0c;标签的使用【快速入门Git】 Git基础常用命令Git工作流程工作区&#xff0c;暂存区和版本库文件状态获取Git仓库 git init | git clone查看文件状态 git status暂存已修改的文件 git add 查看已暂存和未暂存的修改 git diff提交文件更改…

【Vue】Vue基础入门

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue ⛺️稳重求进&#xff0c;晒太阳 Vue概念 是一个用于构建用户界面的渐进式框架优点&#xff1a;大大提高开发效率缺点&#xff1a;需要理解记忆规则 创建Vue实例 步骤&#xff1a; …

掌握JXLS:高效Java Excel处理库的终极指南

jxls是一个轻量级的Java库&#xff0c;用于基于模板的Excel报表生成。 jxls作为一个开源工具&#xff0c;提供了一种高效且易于维护的方式来处理复杂的Excel导出需求。它允许用户通过在Excel模板中放置特定的标记或注释来定义数据的输出格式和布局&#xff0c;从而避免了编写大…

2024牛客寒假算法基础集训营3部分题解

智乃与瞩目狸猫、幸运水母、月宫龙虾 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 Ubuntu是一个以桌面应用为主的Linux发行版操作系统&#xff0c;其名称来自非洲南部祖鲁语或豪萨语的"ubuntu"一词&#xff0c;意思是"人性…

基于OpenCV灰度图像转GCode的螺旋扫描实现

基于OpenCV灰度图像转GCode的螺旋扫描实现 引言激光雕刻简介OpenCV简介实现步骤 1.导入必要的库2. 读取灰度图像3. 图像预处理4. 生成GCode5. 保存生成的GCode6. 灰度图像螺旋扫描代码示例 总结 系列文章 ⭐深入理解G0和G1指令&#xff1a;C中的实现与激光雕刻应用⭐基于二值…

光耦固态继电器:2024年发展之路

随着科技的迅猛发展&#xff0c;光耦固态继电器在2024年面临着独特的机遇与挑战。本文将深入分析光耦固态继电器行业的现状&#xff0c;探讨其在技术创新、市场需求等方面的机遇和挑战。 光耦固态继电器技术创新的机遇&#xff1a; 光耦固态继电器作为电气控制领域的关键元件&…