根据提供的文件信息,本文将详细解析SDRAM相位角计算的相关知识点,包括所需参数的获取方式、具体计算方法以及PLL参数设置等内容。 ### 一、SDRAM与FPGA概述 SDRAM(Synchronous Dynamic Random Access Memory)即同步动态随机存取存储器,是一种广泛应用于计算机系统中的内存类型。其主要特点是通过同步时钟信号实现数据访问,能够提供高速的数据传输速率。FPGA(Field-Programmable Gate Array)即现场可编程门阵列,是一种高度可编程的集成电路,常用于实现复杂的数字逻辑功能。 在FPGA设计中,正确配置SDRAM接口对于确保系统稳定性和提高性能至关重要。其中一个关键步骤就是SDRAM相位角的计算。 ### 二、SDRAM参数获取方法 #### 1. SDRAM参数获取 SDRAM的参数主要来自于其数据手册。通常,这些参数包括但不限于: - **TDS**(Input Data Setup Time): 输入数据建立时间,即数据需要在时钟边沿之前保持稳定的时间。 - **TDH**(Input Data Hold Time): 输入采样保持时间,即数据需要在时钟边沿之后保持稳定的时间。 - **THZ**(Output High Impedance Time): 输出高阻时间,即输出端口由正常状态转换为高阻态的时间。 - **TOH**(Output Hold Time): 输出保持时间,即输出数据需要在时钟边沿之后保持稳定的时间。 这些参数可以从SDRAM芯片的数据手册中获取。例如,MT48LC16M16A2型号的SDRAM,可以在数据手册中找到对应的参数值。 #### 2. FPGA参数说明 FPGA参数的获取需要进行特定的设置,以确保能够准确获取到所需的时序参数。以下是一些关键步骤: - **设置时间分析模式**:在FPGA设计工具中,需要设置使用经典时序分析(Classic Timing Analyzer),以便获取到准确的时序数据。 - **连接SDRAM接口**:根据设计需求,正确连接SDRAM接口至FPGA。需要注意的是,某些参数(如c1)可能需要预先计算得出。 - **编译获取参数**:完成设计并编译后,可以从编译报告中获取到关键参数,如TCOMAX、Tsumax、THmax等。 ### 三、SDRAM相位角计算 #### 公式计算 相位角计算基于FPGA和SDRAM的关键时序参数。计算过程中,主要关注以下几个方面: - **读滞后**(Read Skew): Toh - THmax - **写滞后**(Write Skew): Tclk - TCOMAX - **读超前**(Read Advance): TCOMIN - TDH - **写超前**(Write Advance): Tclk - THZ - TSUmax 其中: - **Toh** 代表SDRAM的输出保持时间; - **THmax** 代表SDRAM的最大输出高阻时间; - **Tclk** 代表时钟周期; - **TCOMAX** 代表FPGA的最大时钟输出时间; - **TCOMIN** 代表FPGA的最小时钟输出时间; - **TDH** 代表SDRAM的输入采样保持时间; - **THZ** 代表SDRAM的输出高阻时间; - **TSUmax** 代表SDRAM的最大输入数据建立时间。 通过以上公式,我们可以计算出读写操作的滞后和超前时间,进而确定SDRAM相位角的具体数值。 #### 计算实例 以文中提供的数据为例: - 读滞后:Toh - THmax = 10.4ns - 写滞后:Tclk - TCOMAX = 3.433ns (假设时钟频率为29.5MHz * 4) - 读超前:TCOMIN - TDH = 1.142ns - 写超前:Tclk - THZ - TSUmax = -4.882ns 根据上述计算结果,可以得出相位角的最小值(min)为: \[ \text{min} = \frac{-3.433 - 4.882}{2} = -4.1575\text{ns} \] ### 四、PLL参数设置 PLL(Phase-Locked Loop)即锁相环,是一种用于调节频率和相位的电路。在FPGA设计中,通过调整PLL参数,可以实现对SDRAM时序的精确控制。 #### 设置PLL参数 根据上述计算结果,可以将PLL的相位差设置为-4.1575ns(文中简化为-4.15ns)。具体设置步骤如下: - 在FPGA开发软件中打开PLL配置界面。 - 调整PLL参数,使输出时钟相对于输入时钟具有所需的相位偏移。 - 完成设置后,重新编译并下载设计至FPGA板。 通过这种方式,可以确保SDRAM与FPGA之间的数据交换在正确的时序下进行,从而提高系统的整体性能和稳定性。 SDRAM相位角计算是一项重要的FPGA设计任务,涉及到了解和应用SDRAM及FPGA的关键时序参数。通过合理设置PLL参数,可以有效地优化系统性能。
2025-11-21 08:42:27 356KB fpga
1
FPGA(现场可编程门阵列)在现代电子设计中扮演着重要角色,特别是在需要高度定制化和高性能的通信系统中。在本项目中,FPGA被用于控制88E1512以实现网络通信功能。88E1512是由Marvell公司生产的一款单端口物理层(PHY)设备,它支持高达千兆位的以太网通信。 工程代码的核心包括三个主要部分:MDIO(管理数据输入/输出)的时序控制、88E1512的寄存器配置以及UDP(用户数据报协议)网络通信的实现。 MDIO是一种串行通信接口,用于在以太网物理层设备和网络控制处理器之间传输控制数据。在本工程代码中,FPGA必须实现精确的MDIO时序控制,以保证能够正确地读取和配置88E1512 PHY设备的状态寄存器和控制寄存器。时序控制的准确性直接关系到PHY设备能否正确初始化以及网络通信的质量。 对88E1512寄存器的控制是确保设备能够适应特定网络环境要求的关键步骤。FPGA通过MDIO接口发送特定的控制字,来配置PHY设备的工作模式,比如速率自适应、全双工模式和回环测试等。这需要对88E1512的硬件规格书有深入的理解,以及在FPGA中实现相应的寄存器配置逻辑。 工程代码需要实现UDP网络通信功能。UDP是一种无连接的网络协议,它允许数据包在没有建立连接的情况下进行传输。在FPGA中实现UDP通信,意味着需要设计一套协议栈,以便能够处理IP数据包的封装与解封装,计算校验和,管理套接字,以及处理网络层的寻址和路由问题。UDP的轻量级特性使其在实时数据传输中被广泛采用,尤其是在延迟敏感的应用场景中,如视频流传输、在线游戏和工业控制等。 上述各部分的协同工作,使得FPGA能够有效地控制88E1512设备,实现稳定且高效的网络通信功能。对于工程师来说,理解并能够调试FPGA代码以及PHY设备的行为是非常关键的。此外,对于高速网络通信系统的设计者而言,能够灵活地在硬件层面上调整和优化网络设备的性能也是至关重要的。 此外,备份文件如vivado_18680.backup.jou、vivado_13812.backup.jou等和日志文件vivado_18680.backup.log、vivado_13812.backup.log等,能够提供项目开发过程中的一些详细信息和状态记录。这些文件记录了工程代码的版本历史、配置信息、以及可能发生的错误和警告信息。它们对于恢复项目状态、问题追踪以及性能优化都是重要的资源。
2025-11-20 16:04:00 5.87MB FPGA
1
本文详细介绍了在FPGA上实现图像对比度调节的直方图均衡化方法。主要内容包括:1)任务目标是通过直方图均衡化调节图像对比度;2)详细阐述了直方图均衡化的四个步骤:原始直方图计算、归一化直方图、累积分布函数计算和灰度值映射;3)提供了完整的Verilog代码实现,包括RGB转YUV模块、直方图统计模块、均衡化模块和顶层模块;4)介绍了仿真测试方法,包含测试激励文件和视频源模块;5)展示了均衡化前后的实验效果对比。该方案采用硬件描述语言实现,适合FPGA平台上的实时图像处理应用。 FPGA平台上图像处理技术的核心在于利用硬件描述语言实现复杂的计算任务,以达到实时处理的效果。在本文中,重点介绍了直方图均衡化技术在FPGA上的应用,这是一种能够改善图像对比度的有效技术。 直方图均衡化包含四个关键步骤。原始直方图计算是基础,它统计图像中各个灰度级别的像素数,形成直方图数据。随后,归一化直方图环节则通过将原始直方图按比例缩放,使直方图的面积适应于新的灰度范围。紧接着,累积分布函数(CDF)的计算环节是算法的核心,它累积直方图数据,形成一个单调递增函数,此函数用于指导像素值映射。最终,灰度值映射阶段将原始图像的像素值转换为新值,基于CDF函数,这样便完成了从原始直方图到均衡化直方图的转换。 为了在FPGA上实现这一系列复杂操作,文章提供了一套完整的Verilog代码实现。其中,RGB转YUV模块负责将常用的RGB色彩空间转换为更适合处理的YUV色彩空间。直方图统计模块根据原始图像数据计算出直方图。均衡化模块则包含了归一化和CDF计算的关键算法,最终输出均衡化后的直方图数据。顶层模块将所有子模块连接起来,以实现最终的图像处理功能。 在实际应用中,为了验证算法的有效性,需要进行仿真测试。测试方法包括设计测试激励文件和视频源模块,以提供测试图像数据。测试结果的验证需要展示均衡化前后的图像效果对比,从而直观展现算法提升对比度的效果。 该FPGA实现方法的优势在于其实时性,由于FPGA的并行处理能力,直方图均衡化算法能够以接近实时的速度运行,非常适合对处理速度有严格要求的应用场景。此外,该方法通过硬件描述语言实现,具有良好的可移植性和可扩展性,便于在不同的FPGA平台上部署。 由于FPGA在实时性和并行性方面的优势,越来越多的图像处理任务开始在这一平台上实现。直方图均衡化作为一种基本的图像增强技术,在不同的应用中扮演着重要角色。无论是在医疗成像、卫星遥感还是数字摄影等领域,通过FPGA实现的图像处理方法都为图像质量的提升开辟了新的可能性。
2025-11-20 10:16:25 6KB FPGA开发 图像处理 数字图像处理
1
安路(Anlogic)USB JTAG简易下载器(DOWNLOAD CABLE,)固件,11K,2017年版本,适用于STM32F103C8T6,用STM32CubeProgrammer配合ST-Link/J-Link直接下载即可,支持JTAG和Flash固化
2025-11-19 21:10:55 16KB FPGA
1
本文提出了一种适用于高数据速率通信接收机的高效并行符号定时架构。 所展示的架构依赖于经典Gardner循环的修改版本,并具有“多通道流水线”内插器,该符号使符号率比FPGA的时钟率高出几倍,从而最大程度地提高了可实现的吞吐量。 在Xilinx XC7VX690T FPGA上以150MHz时钟速率演示了时序恢复方案,并在4.8GHz采样率ADC上演示了该时序恢复方案,以实现600Msps符号速率的QPSK数据流。 此外,可以观察到,提出的方案仅占用目标FPGA中逻辑,存储和计算资源的2%。 稍作修改,我们的算法就可以适用于其他幅度调制星座,例如8PSK,16PSK或QAM。 ### 使用FPGA实现600Msps QPSK的并行符号时序恢复 #### 摘要 本文介绍了一种高效并行符号时序恢复架构,特别适用于高数据速率的通信接收机。该架构基于经典Gardner循环的一个修改版本,并引入了一个“多通道流水线”插值器,使得符号率可以远高于FPGA的工作时钟频率,从而极大地提升了可实现的吞吐量。本研究在Xilinx XC7VX690T FPGA上以150MHz时钟速率进行了实验验证,并与一个采样率为4.8GHz的ADC结合使用,实现了600Msps QPSK数据流的时序恢复。实验证明,所提出的方案只占用了目标FPGA中的逻辑、存储和计算资源的2%。稍加修改后,该算法还可以应用于其他类型的幅度相位调制星座,例如8PSK、16PSK或QAM。 #### 关键词 符号时序恢复、插值、多通道流水线、FPGA #### 1. 引言 符号同步(即定时恢复)是数字通信接收机中的关键技术之一。其基本原理是从输入的基带数字波形中找到每个符号的最佳抽样位置。通常情况下,抽样率\(f_{\text{smp}}\)被选择为符号率\(R_s\)的整数倍,即\(f_{\text{smp}} = N \cdot R_s\),其中\(N\)为正整数。经典的定时恢复方法,如Gardner循环,在其原始形式下,假设接收机可以执行数字信号处理操作的时钟频率\(f_{\text{clk}}\)至少等于或大于\(f_{\text{smp}}\),这是许多实际数字接收机设计的起点。 然而,随着符号率的提高,意味着信息传输带宽的增加,这对于全球卫星通信系统、无人机(UAV)4K视频传输等众多应用场景来说至关重要。当符号率\(R_s\)提高到某个水平,以至于\(f_{\text{smp}}\)甚至\(R_s\)超过了FPGA的工作时钟频率时,传统的定时恢复方法面临挑战。 #### 2. 并行符号时序恢复架构 为了克服上述限制,本文提出了一种新的并行符号时序恢复架构。这一架构的特点在于利用了改进版的Gardner循环以及多通道流水线插值技术。改进后的Gardner循环能够更准确地估计符号的定时误差,而多通道流水线插值则可以有效降低符号间的干扰,并允许符号率远远超过FPGA的时钟频率。 **2.1 改进的Gardner循环** Gardner循环是一种常用的无数据辅助的定时恢复方法。传统Gardner循环通过检测相邻两个样本之间的相位差来估计定时误差。本文中的改进版Gardner循环进一步优化了相位检测机制,提高了定时误差估计的精度。 **2.2 多通道流水线插值** 多通道流水线插值技术的核心在于将符号的处理过程分解成多个并行的子通道,每个子通道负责一部分数据的处理。这种方法可以显著提高处理速度,同时减少对FPGA资源的占用。通过采用合适的插值算法,可以有效地补偿由于高速采样带来的时延和失真问题。 #### 3. 实验验证 为了验证所提方案的有效性,我们在Xilinx XC7VX690T FPGA平台上进行了实验。该平台工作在150MHz的时钟频率下,与4.8GHz采样率的ADC相结合,成功实现了600Msps QPSK数据流的符号时序恢复。实验结果表明,即使在如此高的数据速率下,方案仍然保持良好的性能,并且仅消耗了目标FPGA中约2%的逻辑、存储和计算资源。 #### 4. 应用扩展性 本研究还讨论了方案的应用扩展性,即如何将此架构应用到其他类型的调制星座中,如8PSK、16PSK或QAM等。这些调制方式虽然在复杂度上高于QPSK,但同样适用于高速数据传输场景。通过适当的修改,本文提出的架构可以很好地适应这些调制方式,从而拓宽其应用场景。 #### 结论 本文提出了一种高效的并行符号时序恢复架构,该架构基于改进的Gardner循环和多通道流水线插值技术,成功地在高数据速率通信接收机中实现了600Msps QPSK数据流的符号时序恢复。实验结果显示该架构不仅性能优越,而且资源消耗极低,具有很高的实用价值。此外,该架构还展示了良好的扩展性,可以应用于其他类型的调制星座,展现出广泛的应用前景。
2025-11-19 20:40:49 1022KB symbol timing recovery interpolation
1
本文详细介绍了基于EGO1开发板的简易音乐播放器设计。设计采用Verilog语言实现,通过FPGA生成PWM或PDM信号,经过低通滤波器转换为模拟信号驱动音频输出。核心设计包括四个寄存器:state(乐谱状态机)、count(计数器)、count_end(存储音阶参数)和count1(计数器)。通过查表获取C大调音阶频率对应表,并计算参数D=F/2K(F为时钟频率,K为音阶频率),控制count累加实现特定音阶输出。文章还提供了主要代码模块,包括状态机控制、计数器逻辑和乐谱参数设置,展示了如何通过硬件描述语言实现音乐播放功能。 本文详细阐述了如何基于EGO1开发板设计一款简易的音乐播放器。该设计的开发采用了Verilog语言,利用FPGA平台生成PWM或PDM信号,再通过低通滤波器将其转换成模拟信号以驱动音频输出。在核心设计中,包含了四个关键寄存器,分别是用于存储乐谱状态的状态寄存器、负责计数的计数器、存储音阶参数的计数器以及用于其他计数功能的计数器1。为了输出特定的音阶,系统会通过查表得到C大调音阶频率的对应值,并依据公式D=F/2K计算出必要的参数,其中F代表时钟频率,K代表音阶频率,然后通过控制计数器累加的方式来实现。 设计过程中,作者深入探讨了如何通过硬件描述语言实现音乐播放功能的每一个细节。文章提供了主要的代码模块,例如状态机控制逻辑、计数器逻辑以及乐谱参数的设置等,这些内容都是通过硬件描述语言实现的。每个模块的代码都对应了音乐播放器的一个功能,而整体的设计展示了从底层硬件控制到音乐播放功能实现的完整过程。 文章还包含了如何利用Verilog语言对FPGA进行编程,以达到生成音频信号的目的。通过FPGA的可编程特性,音乐播放器能够灵活地处理音频信号,实现对不同音阶和节奏的控制。FPGA平台的优势在于其能够同时处理多个任务,并且在音频处理方面具有较高的实时性和可靠性。此外,文章还强调了低通滤波器的重要性,因为它是将数字信号转换为模拟信号的关键部件,直接影响音频输出的质量。 在嵌入式系统开发方面,EGO1开发板提供了一个良好的实验和学习平台,适合进行FPGA的编程练习。通过实践,开发者不仅可以加深对硬件编程的理解,还能获得在音频信号处理方面的经验,这对于未来在嵌入式系统领域的发展大有裨益。 这篇文章通过介绍如何在EGO1开发板上实现一个基于Verilog语言和FPGA的简易音乐播放器设计,为读者提供了深入理解和实践硬件编程的机会。文章详细讲解了音乐播放器的设计原理和实现过程,强调了硬件描述语言在嵌入式音频处理中的应用,并展示了相关硬件资源的高效利用。
2025-11-19 18:28:19 5KB Verilog FPGA 嵌入式系统 音频处理
1
DSP(Digital Signal Processing)中的中值滤波是一种非线性的信号处理技术,它在去除噪声、边缘保护等方面具有显著优势。这种滤波方法基于排序统计理论,通过将图像或信号的每个像素点替换为其邻域内像素值的中值来实现去噪。中值滤波器通常用于抑制椒盐噪声、斑点噪声以及类似噪声,尤其适用于处理具有尖锐边缘的图像。 中值滤波的基本原理是:假设我们有一个窗口(也称为滤波器模板),该窗口在图像上滑动,对于窗口内的每个像素点,不是简单地用平均值替换它,而是选取像素值的中值。这样,噪声点(通常是极端值)会被周围像素的平均值所取代,从而有效地消除噪声而不损害图像的边缘。 具体步骤如下: 1. 定义一个滤波窗口,通常为奇数大小的方形或圆形区域,例如3x3或5x5。 2. 将窗口移动到图像的每一个像素位置。 3. 对于窗口内的所有像素值进行排序。 4. 取排序后的中间值作为当前像素的新值,即中值滤波的结果。 5. 继续移动窗口,重复以上步骤,直至处理完整个图像。 在DSP系统中实现中值滤波,通常需要考虑以下几点: 1. 数据存储:由于需要对邻域像素值进行排序,可能需要额外的内存空间来存储这些数据。 2. 算法优化:为了提高处理速度,可以采用快速选择算法或者二分查找法来找到中值,减少计算时间。 3. 并行处理:利用DSP芯片的并行处理能力,可以同时处理多个像素点,大大加快处理速度。 4. 实时性:在实时系统中,需要确保滤波过程不会造成处理延迟,因此需要合理设计滤波器的大小和处理流程。 在"lab3"这个实验中,可能是通过编程实践来理解和应用中值滤波的概念。可能涉及的步骤包括编写滤波函数,设置滤波器窗口大小,实现排序和中值选取逻辑,以及对输入信号或图像进行滤波处理并观察结果。"www.pudn.com.txt"可能包含的是实验指导、源代码示例或者滤波效果的分析讨论。 总结来说,DSP中的中值滤波是一种强大的去噪工具,尤其适合处理含有尖锐边缘的图像。在实际应用中,我们需要考虑滤波器的设计、算法优化以及实时性,以便在保证效果的同时提高效率。通过实验和编程实践,我们可以更深入地理解其工作原理和优化技巧。
2025-11-19 16:56:12 611KB dsp中值滤波
1
本文介绍了基于HLS的YOLOv3在FPGA上的实现过程,选用了AX7350开发板进行网络加速。主要内容包括使用开源YOLOv3进行网络训练和量化,生成加速器IP核,搭建SOC硬件平台,导出bit流文件,以及使用Petalinux制作SD镜像启动文件。此外,还详细说明了如何通过SDK工具编写驱动生成.elf文件,并进行上板调试,确保软件和硬件输出一致。文章还提供了GitHub上的相关代码和资源链接,包括Petalinux代码、Vivado工程和量化代码,方便开发者直接使用或参考。 YOLOv3是一个高效、快速的目标检测算法,它能够在图像中实时识别多个对象。FPGA(Field-Programmable Gate Array)是一种可以重新配置的数字逻辑电路。将YOLOv3部署到FPGA上,可以实现网络加速,满足实时性要求高的应用场景。在本文中,作者详细描述了基于HLS(High-Level Synthesis)的YOLOv3在FPGA上的实现过程。 进行网络训练和量化是实现过程的第一步。YOLOv3模型的训练使用开源代码进行,量化过程则涉及将训练好的模型参数转化为整数形式,以减少FPGA实现过程中的计算复杂度。生成加速器IP核是将训练和量化后的模型部署到FPGA上的重要步骤,IP核是一种可以重复使用的模块化电路设计。 接下来,作者详细描述了如何搭建SOC(System on Chip)硬件平台。SOC是一种将计算机系统的主要部件集成到单个集成电路芯片上的技术。在本文中,SOC硬件平台的搭建需要导出bit流文件,这是一种用于描述FPGA硬件配置的文件格式。此外,作者还介绍了如何使用Petalinux制作SD镜像启动文件。Petalinux是基于Linux的嵌入式开发平台,SD镜像则是一种存储了操作系统和相关软件的存储卡映像文件。 软件和硬件的衔接部分也是本文的一个重点。作者说明了如何通过SDK(Software Development Kit)工具编写驱动生成.elf文件,并进行上板调试。.elf文件是可执行链接格式文件,用于在嵌入式系统上加载和运行程序。上板调试是指在实际硬件上测试程序的过程,以确保软件运行结果与硬件预期一致。 为了方便开发者使用和参考,作者还提供了GitHub上的相关代码和资源链接。这些资源包括Petalinux代码、Vivado工程和量化代码。Petalinux代码是用于制作Petalinux操作系统的源码,Vivado工程则是Xilinx公司推出的用于FPGA设计的软件工程。量化代码是用于模型量化处理的程序代码。 本文详细介绍了基于HLS的YOLOv3在FPGA上的实现过程,包括网络训练、量化、生成IP核、搭建硬件平台、制作启动文件以及驱动开发和调试等关键步骤。同时,提供了丰富的代码和资源链接,为开发者提供了便利的参考和使用途径。
2025-11-19 11:22:00 4.28MB 软件开发 源码
1
使用FPGA实现从CameraLink相机Base模式解码到HDMI高清视频输出的设计方案。主要内容涵盖CameraLink相机与FPGA的连接、LVDS视频解码、像素时钟同步、AXI4-Stream转换、视频数据存入DDR3缓存以及最终通过HDMI接口输出高清视频的具体步骤和技术细节。文中还提供了部分伪代码示例,展示了各个关键环节的实现方法。 适合人群:从事图像处理、嵌入式系统开发的技术人员,尤其是对FPGA和CameraLink相机有研究兴趣的专业人士。 使用场景及目标:适用于需要高效处理CameraLink相机输入并实现实时高清视频输出的应用场合,如工业检测、医疗成像等领域。目标是掌握FPGA在图像处理中的应用技巧,提高图像处理效率和质量。 其他说明:文章不仅讲解了理论知识,还结合实际案例进行了详细的步骤分解,有助于读者更好地理解和实践相关技术。
2025-11-19 10:21:23 1.94MB
1
三电平半桥LLC谐振变换器电路仿真研究:频率控制、驱动信号CMPA CMPB与特性分析,三电平半桥LLC谐振变换器电路仿真研究:移相角度控制与DSP PWM生成方式探讨,输出电压优化与特性分析,三电平半桥LLC谐振变器电路仿真 采用频率控制方式 引入一定的移相角度(比较小) 驱动信号采用CMPA CMPB方式产生 增计数模式(参照DSP PWM生成) 相比普通半桥LLC开关管电压应力小 输出电压闭环控制 输出特性好,几乎无超调,软开关 plecs matlab simulink等软件模型都有 ,三电平半桥LLC谐振变换器; 频率控制; 移相角度; 驱动信号CMPA CMPB; 增计数模式; 电压应力小; 输出电压闭环控制; 软开关; PLC、Matlab、Simulink模型。,三电平半桥LLC谐振变换器:频率控制与CMPA CMPB驱动的仿真研究
2025-11-18 08:15:58 1.32MB edge
1