大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
序号 |
区别之处 |
VHDL |
Verilog |
1 |
文件的扩展名不一样 |
.vhd |
.v |
2 |
结构不一样 |
包含库、实体、结构体。 ARCHITECTURE 结构体名 OF 实体名 IS |
模块结构 (module… endmodule) 其中assign语句、元件例化语句、always语句的顺序可以更换 |
3 |
对库文件的要求不一样 |
须有相应的库或程序包支持,实体间调用子程序,需要将子程序打成程序包 |
没有专门的库文件 (只有基本门的库),模块可以通过例化直接调用,不需要打成程序包 |
4 |
端口定义的地方不一样 |
实体中定义 |
module的模块名后面先列出端口列表,再在模块中用input,output等定义 |
5 |
端口定义方式不一样 |
端口名(端口名,端口名) : 方向 数据类型名(Default Value) ; |
端口类型 端口1,端口2,端口3,…; |
6 |
端口定义类型不一样 |
有IN, OUT, INOUT, BTFFER 四种 |
有input ,output, inout 三种 |
7 |
内部信号(SIGNAL)声明不一样 |
在结构体中声明,有些局部变量还可在进程中声明 |
在端口定义后进行声明内部变量 |
8 |
标识符规则不一样 |
不区分大小写 |
区分大小写 |
9 |
关键词要求不一样 |
允许大小写混写 |
关键词必须小写 |
10 |
常量定义的关键词和格式表示不一样 |
CONSTANT 常量名:数据类型 :=数值; |
parameter 常量名1 = 数值1, 常量名2 = 数值2,…,常量名n = 数值n; |
11 |
常量表示不一样 |
用双引号. |
<位宽>’<进制符号><数字> |
12 |
数组定义方式不一样 |
定义4位数组A: |
定义4位数组A: |
13 |
下标名表示不一样 |
用小括号表示, |
用中括号表示, |
14 |
数据对象不一样,且二者变量的含义不一样 |
常量,变量,信号. |
常量,变量 |
15 |
数据默认值 |
默认值为本类型的最小非负值(某个类型的范围是以0为对称的) |
wire类型默认值为 z, reg类型默认值为x ; |
16 |
变量定义的格式不一样 |
VARIABLE 变量名:数据类型 :=初始值 |
数据类型 [位宽] 变量1,变量2,…,变量n; |
17 |
数据类型不一样 |
布尔(BOOLEAN)、位(BIT)、位矢量(BIT_VECTOR)、标准逻辑位(STD_LOGIC)、标准逻辑矢量(STD_LOGIC_VECTOR)。 |
wire,tri,reg,interger,real,time型,主要是wire和reg型,比较简单。 |
18 |
赋值不一样 |
按数据对象赋值分,变量赋值使用“:=”,信号赋值使用”<=”< span=””> |
按语句的执行情况分,assign语句和阻塞语句用“=”赋值,非阻塞语句用“<=”< span=””> |
19 |
赋值要求不一样 |
强类型语言,赋值两边的赋值目标和表达式的数据类型必须一样。不同类型和宽度的数据之间不能运算和赋值,需要调用包来完成转换; |
不是强类型语言,可以自动完成不同类型数据的运算和赋值; |
20 |
操作符不一样 |
逻辑操作符(Logica Operator)、关系操作符(Relationa Operator)、算术操作符(Arithmetic Operator)、符号操作符(Sign Operator),没有缩减操作符,没有三目的条件操作符 |
操作符比较丰富,有算数操作符,逻辑操作符,位运算、关系操作符,等式操作符,缩减操作符,转移操作符,条件操作符,位并接操作符 |
21 |
条件中,等于判断符号不一样 |
等于= ; 不等于 /= |
等于(= =)或全等(= = =) |
22 |
逻辑操作符不一样 |
AND, NAND, NOT, OR, NOR, XNOR, XOR等 |
&&(逻辑与), || (逻辑或), !(逻辑非), ~ (按位取反), &(按位与), |(按位或), ^(按位异或), ^~ 或~ ^(按位同或) |
23 |
移位操作符不一样 |
除了逻辑左移SLL、逻辑右移SRL之外,还有算数左移SLA、算数右移SRA、循环左移ROL、循环右移ROR。其中逻辑左移SLL、逻辑右移SRL与Verilog HDL的左移<<,>>一致 |
只有逻辑左移<<>>,没有算数左移、算数右移、循环左移、循环右移。 |
24 |
并置操作符不一样 |
用&并置, |
用{ }并置, |
25 |
并行赋值语句不一样 |
信号赋值语句 (直接赋值、条件赋值、选择赋值) |
assign语句 (连续赋值) 只对wire型 |
26 |
顺序语句不一样 |
信号赋值 |
阻塞语句 |
27 |
并行语句中的进程语句不一样 |
PROCESS(敏感列表) |
always@ (敏感列表) |
28 |
条件判断语句if的格式不一样 |
IF 条件1 THEN |
if (条件1) |
29 |
条件控制语句case的格式不一样 |
CASE 表达式 IS |
case (表达式) |
30 |
case语句的应用范围也不一样 |
在CASE语句中,条件表达式是没有优先级的,如优先级编码器可以用IF语句进行描述,但不可以使用CASE语句描述 |
除了case以外,还有相关的casex和casez语句,如用casex可以实现优先编码器 |
31 |
循环控制语句不一样 |
循环控制语句有:FOR_LOOP循环语句、WHILE_LOOP循环语句、NEXT语句、EXIT语句 |
for语句、repeat语句、while语句、和forever语句 |
32 |
for循环控制语句格式不一样 |
[标号:] FOR 循环变量 IN 循环次数范围 |
for(循环指针=初值; 循环指针<终值; 循环指针=循环指针+步长值) |
33 |
for循环中的循环变量存在区别 |
循环变量不需要定义 |
循环指针需要定义 |
34 |
while语句格式不一样 |
[标号:] WHILE 条件 LOOP |
while(循环执行条件表达式) |
35 |
元件例化不一样 |
COMPONENT 元件名 IS |
设计模块名 <例化电路名> (端口列表) ; |
36 |
时钟定义不一样 |
时钟列在PROCESS的敏感列表中,如若上升沿有效,则 |
在always结构中,上升沿直接体现在always的敏感列表中。如 |
37 |
时钟边沿定义方式不一样 |
上升沿(clk’EVENT AND clk=‘1’) |
上升沿posedge clk |
38 |
生成重复结构的能力不同 |
有生成语句(GENERATE)生成由大量相同单元构成的模块,格式为: |
没有对应的生成语句,有相近的实例数组,格式为: |
39 |
子程序不一样 |
procedure和function |
task 和 function |
40 |
注释方法不一样 |
用- -引导注释信息 |
用//或/*…*/注释 |
– END –
NOW现在行动!
推荐阅读
【Vivado那些事】如何查找官网例程及如何使用官网例程【Vivado使用误区与进阶】总结篇【Vivado那些事】Vivado中常用的快捷键(二)其他常用快捷键SystemVerilog数字系统设计_夏宇闻 PDFVerilog 里面,always,assign和always@(*)区别图书推荐|ARM Cortex-M0 全可编程SoC原理及实现高级FPGA设计技巧!多时钟域和异步信号处理解决方案现代计算机的雏形-微型计算机MCS-4AD9361 和Zynq及其参考设计说明1202年了,还在使用虚拟机吗?Win10安装Ubuntu子系统及图形化界面详细教程谈谈Xilinx FPGA设计的实现过程
Github 上有哪些优秀的 VHDL/Verilog/FPGA 项目
AD936x+ZYNQ搭建收音机(一)
AD936x+ZYNQ搭建收音机(二)含视频演示
AD936x+ZYNQ搭建收音机(三)-终篇
AD936x+ZYNQ搭建OpenWIFI
Verilog 版本:Verilog-95、Verilog-2001与System Verilog区别简谈
FPGA时钟设计方案无招胜有招-Vivado非工程模式下的详细设计
追寻ARM的起源-Acorn电脑简史及FPGA实现
面试中经常会遇到的FPGA基本概念,你会几个?
Xilinx FPGA MIPI 接口简单说明
介绍一些新手入门FPGA的优秀网站
Vivado ML(机器学习) 2021尝鲜
推荐一些可以获取免费的国外的原版书籍(电子版)网站
【Vivado那些事】FPGA的配置方式
FPGA 的重构
浅析FPGA局部动态可重构技术
点击上方字体即可跳转阅读
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/190885.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...