系统:win10
平台:Quartus II
FPGA:EP4CE6
Verilog和C的区别
Verilog是硬件描述语言,在编译下载到FPGA之后,会生成电路,所以Verilog全部是并行
处理与运行的;C语言是软件语言,编译下载到单片机/CPU之后,还是软件指令,而不会根据
你的代码生成相应的硬件电路,而单片机/CPU处理软件指令需要取址、译码、执行,是串行执
行的。
1 信号类型声明:
一般定义个声明放到一起
或者将端口声明和定义放到一起
2 逻辑功能定义
assig 持续赋值语句定义
3 调用元件
内置门元件调用
4 逻辑值
逻辑0 GND
逻辑1 VCC
逻辑x 未知
逻辑z 高组态,外部没有激励信号是一个悬空状态
5 进制
二进制表示如下:4’b0101表示4位二进制数字0101;
十进制表示如下:4’d2表示4位十进制数字2(二进制0010);
十六进制表示如下:4’ha表示4位十六进制数字a(二进制1010),十六进制的计数方式
为0,1,2…9,a,b,c,d,e,f,最大计数为f(f:十进制表示为15)。
默认32位位宽, 10进制数
16’b1001_1010_1010_1001 = 16’h9AA9 //前面的下划线为增加可读性,编译时会忽略
5 标识符
字母数字$下划线 第一个字符必须是字母或下划线
区分大小写
不建议大小写混合使用
内部信号建议全部小写
信号命名体现信号的含义
推荐写法: 使用下划线进行区分
有意义的:sum cpu_addr
clk_50, clk_cpu
6 数据类型
1 寄存器类型:
时序逻辑: always有时钟信号,对应的是寄存器
组合逻辑: always不带时钟信号,硬件连线
2 线网类型:
3 参数类型:(常亮)跟define 提高代码可读性和修改方便
常用语表示状态机,数据位宽, 延迟大小
7 运算符
算数运算符:加减乘除 %
关系运算符:
逻辑运算符: ! && ||
条件运算符:
a?b:c (如果a为真,则选择b,否则选择c)
位运算符:
~a 将a每一位取反
a^b 异或
移位运算符:
a<<b 将a左移b位,这里注意左移会增加b位,低位补0,高位直接增加
a>>b 右移b位,注意:高位补0, 低位直接干掉
拼接运算符:{a,b}
{a,b[7:3]} 将a和b的高四位拼接起来,作为一个新的信号,注意[]表示位置