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 变量名: 后面要加分号 ![](https://file.jishuzhan.net/article/1757242960740618241/6cc756947fac25256287139f5a40919f.webp) ##### 线网数据类型: wire ![](https://file.jishuzhan.net/article/1757242960740618241/6ec8a5b855e8641bb35dc1080ad6db8c.webp) ##### 参数类型: 类似C语言里面的 #define PI 3.14 用于定义状态 运行参数 parameter size=8; parameter a=4,b=6; parameter clock=a+b; ![](https://file.jishuzhan.net/article/1757242960740618241/5a23eb3d54695f3e37ac06be30c06adf.webp) #### 运算符: ![](https://file.jishuzhan.net/article/1757242960740618241/a6e1d053d9a81dc79b664ffd89d523a3.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/5e4a97aa95d24d16abcd0b081546a4b6.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/a8d9ffff93cd6d9b70f836e4dc620ce2.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/5e99d3a1ba588e975f8d69956864f68d.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/1c4ac7945f94a1309a36177c733d8e69.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/b0c4e272983f56ddec7bb672f83e9302.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/ef30114e9a74788afe529277deeceb7e.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/821bf14f7a119b8f0de5f0c8973a5e55.webp) ##### 程序框架: ##### 注释: ![](https://file.jishuzhan.net/article/1757242960740618241/00c050a0c08b03845ddb2c5fdd2c40ac.webp) ##### 关键字: ![](https://file.jishuzhan.net/article/1757242960740618241/00db8a78c9876bb6b15d7813c79d6eb5.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/644ae3e2b2458e7a1abb97d6e22b9353.webp) ##### 程序框架: **module** 模块开始 **模块名字** **(a,b) ;** 模块参数 ,结束加分号 intput a,b; //输入信号 output c,d; //输出信号 assign c = a\|b; //assign复制语句 assign d = a\&b; //会生成实际电路(可综合模块(不可综合模块不能生成电路) **endmodule** 模块结束 ![](https://file.jishuzhan.net/article/1757242960740618241/c6ff5338a60391825d10797db855a34a.webp) 模块调用: ![](https://file.jishuzhan.net/article/1757242960740618241/7758ea75be3a5f311580eea9315d6cd6.webp) ##### 结构语句: inital 初始化语句 always 循环执行 ![](https://file.jishuzhan.net/article/1757242960740618241/0db107394b1b9010809d30ea206e783c.webp) **触发方式:** **沿触发: 通常用来表示时序逻辑** posedge 上升沿触发 negedge 下降沿触发 or 链接多个事件,只要有一个条件就执行一次 ![](https://file.jishuzhan.net/article/1757242960740618241/fda2f566a6735cbfb1ef734f948a9777.webp) **电平触发: 通常用来表示组合逻辑** 等号右边的数字要全部添加到列表里面,可以用 \* 来替代,只要有一个电平发生,就会执行 ![](https://file.jishuzhan.net/article/1757242960740618241/d38c1e460df4506ac1e774d246211422.webp) 组合逻辑:输出只取决与改时刻的输入。 时序逻辑:输出不仅取决与当前状态还与上一个状态有关。记忆功能 ![](https://file.jishuzhan.net/article/1757242960740618241/ac93c180e90fb53d4fb60a698c05aa36.webp) ##### 赋值语句: 阻塞赋值 = : 赋值从上到下一条条赋值语句执行。顺序执行,和C语言一样。 非阻塞赋值 \<= : 每条赋值语句同时执行,所有赋值语句同时执行。它会将所有右边全部计算完后再同时赋值给左边。只能给寄存器类型赋值。 ![](https://file.jishuzhan.net/article/1757242960740618241/eea7c372e7e8a740aadd7295820c7e88.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/0c505016ef588a57fc5028a1a06fa090.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/443f8237ec0993fdcd0c72975cc33b67.webp) ##### 组合逻辑和时序逻辑判断: ![](https://file.jishuzhan.net/article/1757242960740618241/cb3fa77b828af92a1cd157d59c15d176.webp) 时序逻辑:就是有一个D触发器,要随着时钟周期触发: always@(posedge clk or negedge res_n) ,但是组合逻辑是通过电平状态来判断的:always@( \* )或always@(a or b or ...) 所以再时序逻辑里面,一个时钟到来,要执行所有的事情,赋值是要用 \<= 赋值,一次将全部的值赋过去。 而组合逻辑,当触发后依次执行一次,所以用 = 赋值 ,执行一次。 ##### 条件语句: **if** ![](https://file.jishuzhan.net/article/1757242960740618241/22e6e6a33ddee3d79a60b8ec15fe0ae0.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/b8674151d2cdb75ea681a08ee7a7a863.webp) **case** ![](https://file.jishuzhan.net/article/1757242960740618241/13e388d6e39cace99c0d0bef294f3a76.webp) #### 状态机: ###### 概述: 实现顺序逻辑,实现不同状态进行切换。 ![](https://file.jishuzhan.net/article/1757242960740618241/e2bba0387a0c71771ad1d6a73f4f49d0.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/2ffda701f4aa5b3ab6e6092add632348.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/96cd170e328db3f3f76d0d49d331e209.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/cecc31ae8b9a65c13895b02d823cb1d8.webp) ###### 状态机设计: ![](https://file.jishuzhan.net/article/1757242960740618241/97c82af950d86aca1a176d6866b28c1a.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/3f0979387cd8dc8054b85930d0a6bc19.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/749bb7f1de20241bb7433ac1757cc615.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/5316311aa5c98993ec5bfbe5f254b2da.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/2c98cf75a082d964fcc574ef66ac8a4e.webp) ###### 例子: ![](https://file.jishuzhan.net/article/1757242960740618241/eab293265acdd5c5f912feb3b54c9993.webp) ![](https://file.jishuzhan.net/article/1757242960740618241/bb5c352e686ac8021142694607a721fe.webp) 尽量使用时序逻辑: ![](https://file.jishuzhan.net/article/1757242960740618241/ea2732431d85121470fd41a87a2897d1.webp) #### 语法注意: ###### 1. 端口加 wire 还是reg? ![](https://file.jishuzhan.net/article/1757242960740618241/b0a35d8b81e083417f1a4f548b4f4bf0.webp) ## ![](https://file.jishuzhan.net/article/1757242960740618241/dc159f2935b99ee168d02234c69a0632.webp) 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中,输入值和输出值全部在模块端口进行定义 ![](https://file.jishuzhan.net/article/1757242960740618241/985381e3a63ba283583bba7c424457ce.webp) ## 二.代码实践:

相关推荐
坚持每天写程序1 小时前
Processor System Reset IP 核 v5.0(vivado)
fpga开发
相醉为友2 小时前
001 使用单片机实现的逻辑分析仪——吸收篇
笔记·单片机·嵌入式硬件·fpga开发·嵌入式
【云轩】2 小时前
《哪吒的混天绫FPGA》
笔记·嵌入式硬件·fpga开发
热爱学习地派大星5 小时前
FPGA调试笔记
笔记·fpga开发
落笔太慌张~9 小时前
[FGPA基础学习]分秒计数器的制作
学习·fpga开发
国科安芯21 小时前
汽车电气架构中的电源架构
人工智能·嵌入式硬件·fpga开发·架构·汽车
矿渣渣21 小时前
Zynq + FreeRTOS 笔试题1
fpga开发
fei_sun1 天前
【Basys3】外设-灯和数码管
fpga开发
碎碎思1 天前
常见FPGA逻辑单元比较(仅参考)
fpga开发
南棱笑笑生2 天前
20250328易灵思FPGA的烧录器FT4232_DL的驱动安装
fpga开发