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中,输入值和输出值全部在模块端口进行定义  ## 二.代码实践: