- 博客(16)
- 收藏
- 关注
原创 实现多周期ICACHE与DCACHE
endif`endif本篇文章实现了一个以AXI4-lite为访存接口的多周期ICACHE与DCACHE,通过这个实例,可以很好的掌握状态机辅助多周期的设计,状态机很好的控制了复杂性,使得整个设计虽然比较庞大,但是很容易理解与调试。其次,本文编写了高质量的testbench,非常有助于初学者学习testbench的写法与用法。
2025-04-11 14:25:14
258
原创 Verilog语法之常用行为级语法
本文主要介绍了一些在verilog中的行为级语法,并且提供了大量的运行实际例子,可以通过这些例子感受行为级语法在仿真中的巨大作用。概述:行为级语法是RTL级的上一层,或者说是比RTL级更高级的语法,其语法更加符合人类思维的描述方式。行为级语法可用于快速验证算法的正确性,或快速构建一个复杂的系统模型。仿真验证中使用行为级的语法可以充分发挥仿真平台的优越性,用更加简介、高效的语法语句简化并加快仿真系统的构建,让设计者把更多的时间和精力集中在设计和调试上。
2025-01-04 15:59:20
1179
原创 Verilog语法之任务task和函数function
本文主要讲解了Verilog语法中对于任务task以及函数function的作用以及用法,并提供了一些可以运行的示例代码。任务task和函数function是偏行为级的语法,但并非纯粹的行为级,因为可以将其写成符合可综合的形式,被编译器识别并转化为实际的电路。对于初学者,建议慎用。
2025-01-02 23:45:23
512
原创 Verilog语法之阻塞赋值与非阻塞赋值
在第一个initial语句中,a1和b1的赋值使用阻塞赋值(=),执行的顺序先是a1= #5 1,然后是b1= #2 1。在第二个initial语句中,a2和b2的赋值使用了非阻塞赋值语句(<=),因此a2和b2的赋值语句的执行是同时发生的。阻塞赋值(=)与非阻塞赋值(<=)不仅在RTL级语法中使用时有讲究,在行为级语法中使用时也很有讲究,使用得当才能产生期望的激励。在实际的使用中,阻塞赋值实现的语句是按照代码先后顺序执行的,而非阻塞赋值则同时并行执行,没有先后顺序。
2025-01-02 23:16:55
337
原创 Verilog语法之generate与genvar用法
可以在generate中时钟的语法语句包括module(模块)、UDP(用户自定义原语)、门级原语、连续赋值语句、always语句和initial语句等。使用generate时,需要定义genvar作为generate的循环变量。genvar与generate是Verilog 2001才有的,功能非常强大,可以配合条件语句,分支语句等做一些有规律地例化或者赋值等操作;摘要:本文主要讲解了generate与genvar的用法,并且给出了详细的一些例子和用法,可以通过阅读本文基本了解其用法和规则。
2025-01-02 17:27:58
735
原创 Verilog语法之文件读写
本文主要介绍了Verilog语法中关于文件操作的内容,在仿真中我们可以利用文件来存储测试数据或者将测试结果写入相应的文件中,下面介绍了如何操作文件以及给出了相应的例子。
2025-01-02 15:18:05
906
原创 Verilog语法之判断语句if和case
本文主要介绍了Verilog语法中判断语句if和case语句的内容和用法,介绍了详细的语法结构以及具体的代码例子。
2025-01-01 01:00:32
520
原创 Verilog语法之模块与端口
本文主要介绍了Verilog中如何设计模块与定义端口,以及如何实例化模块并调用模块,通过端口将不同的模块连接起来,构成自己的设计。
2025-01-01 00:59:37
746
原创 Verilog语法之赋值语句与参数定义
参数parameter表示对parameter后命名的常量赋值为等号右边的常量值或常量表达式。对parameter赋值的常量表达式必须仅包含常量或其他已被定义的parameter。在同一个模块中,相同名称的parameter只能被申明并赋值一次。parameter申明时可以同时定义数据类型和位宽。对于parameter申明时的数据类型与位宽定义,有如下规则:(1)parameter申明时若没有指定数据类型和位宽,则该parameter的数据类型和位宽由最终赋值给它的常量的数据类型与位宽决定。
2024-12-31 21:19:49
1154
原创 Verilog语法之宏定义与条件编译
define对其后的参数进行定义,用于文本替换。对于一般的参数定义,更加推荐使用parameter或localparam语法。语法结构如下:#10;$stop;endendmodule宏定义的语法在define前面需要加一个半角的撇号,在使用宏变量A和B时,也需要加上撇号。
2024-12-31 16:57:29
837
原创 Verilog语法之特殊符号
位(bit)是Verilog中最基本的操作单位,而且非常灵活和强大。每个数据变量都有一定的位宽,括号[]用于定义位宽和具体的某个位。#10;$stop;
2024-12-31 16:38:13
351
原创 Verilog语法之运算符
Verilog的运算符与C语言基本类似,包括算术运算符、关系运算符、灯饰运算符、逻辑运算符、位运算、缩减运算符、移位运算符、条件运算符、拼接运算符等。各种运算符与条件运算符在同时使用时,具有一定优先级顺序(从高到低)。
2024-12-30 23:54:25
1430
原创 Verilog语法之数据类型
Verilog中支持的数值包括0、1、x、z。0和1分别表示高低电平或false/true状态。x代表未知值,在仿真中x是寄存器类型变量的默认值。在实际的硬件电路中不存在这种状态,因此是行为级语法。z代表高阻态。
2024-12-29 10:50:39
434
原创 FPGA入门知识讲解
简单来说,FPGA就是可以反复进行编程的逻辑器件,FPGA的四个英文单词取自Field Programmable Gate Array。FPGA的开发本质上是一些逻辑电路之间互连从而实现特定的逻辑功能,早期的FPGA开发就是通过绘制原理图来完成的。FPGA的发展历史上出现过许多用于描述电路功能的语言,但是最终只有Verilog和VHDL脱颖而出。
2024-12-27 10:55:02
1243
原创 Vivado下的PLL实验
FPGA开发板上只有一个50MHz的时钟,如果需要工作在100MHz、200MHz怎么办呢?其实很多的FPGA芯片内部集成了PLL,通过PLL可以倍频分频,产生其他更高频率或者更低频率的时钟。
2024-12-25 21:05:49
982
原创 ELF文件
本文详细讲解了ELF文件的组织结构,以及如何查看和分析ELF的头文件以及相应的二进制文件,通过本文,读者可以对ELF文件有一个比较深的认识。
2024-12-01 09:22:03
1053
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人