- 博客(21)
- 资源 (3)
- 收藏
- 关注
原创 【SpinalHDL】3.奇淫技巧
在SpinalHDL中采用this.setDefinitionName达到module名称的目的,请看scala代码。这样就会将SpinalHDL生成的“zz”前缀替换为“tmp”啦,简单又使用的技巧就此获得。最终module名称为"sum_stage0_n2_w8",和SpinalHDL的设定一致。
2024-02-06 17:35:35
353
原创 【SpinalHDL】2.数据类型SpinalEnum
重点生成Verilog时,SpinalConfig的使用,其中enumPrefixEnable = false不生成变量前的前缀,enumGlobalEnable = true将enum默认生成的是define宏,withoutEnumString()则不生成仿真时的string描述,对比下就知道了,下面默认的生成结果。其中object Enum对象实现的基本的SpinalEnum类的定义,注意其中的编码方式,为自定义的编码方式。类Demo Enum初始化一个寄存器enum,并将其初始化为a。
2024-02-06 17:30:00
559
原创 【SpinalHDL】1. Getting Started
继承自Component组件的module_xxx类定义了一个类似verilog中module的模块,内部为module的具体的实现,这里暂时不做具体的阐述;最后object对象定义的main函数为scala语言的入口函数,SpinalVerilog语句实现了将Scala语句转换为Verilog语句的功能。当然也可以不指定版本,每次都使用最近的SpinalHDL版本,build.sbt可以做如下的修改。其中verision为build.sbt的版本号,一般不需要修改;以一个简单的例子做说明吧。
2024-02-06 17:27:08
1680
原创 【Scala 】3. 类和对象
scala是一种面向对象的函数,其中一部分就是scala语言中支持类的实现。子类继承父类的函数的实现,不再声明返回值类型,采用extends关键字;但是面积的实现方式覆盖父类的实现,采用override关键字。上面的例子中声明一个类继承字Shape类,内部变量进行拓展。类中包含实现面积的计算方法。
2024-02-06 17:25:06
795
原创 【Scala】 2. 函数
scala运算符、if …两部分和C语言类型,这里不再赘述,这里从for循环开始讲讲scala和c/c++的不同之处。和c语言类似,基本可以作为参考,智能在于可以直接不写访问值和return关键字实现,下面举例说明。scala中主要包含to和until两个关键字,下面分别看看两者的用法,看例子就行了。此时调用时若需要采用缺省值,变量b可以不赋值。该结果和C语言中使用的方式是一致的。包含return值和返回值类型。包含return关键字。
2024-02-06 17:23:02
951
原创 【Scala】1. 变量和数据类型
不加f关键字,则必定是Double的类型的数据,只有加了在浮点数后加了f关键字后,才表示数据为单精度浮点数,即是32bit的浮点数类型。println函数中添加f关键字起到格式化字符串打印的效果,这个和c语言不同,同时还可以添加s关键字执行特定的表达式。(2)在Scala中,Char关键字表示无符号的16bit数据,数据范围为0~65535。与f类似,若要表示数据为长整型(long)的数据,需要在后面加上L或l关键字作为补充。可以不添加返回值类型,scala自动推断,下面输出的结果是一致的。
2024-02-06 17:19:15
1023
原创 15.基础实验(4)vga显示图像动态移动
vga显示图像动态移动一、实验内容实现vga显示中心200x200的方块动态移动。二、系统框图分辨率保持为640x480保持不变,200x200方块在屏幕上移动,总共有5个状态,将3个状态列出,绘制如下框图。state1:200x200的方块在显示屏上正常移动。state2:200x200的方块到达显示屏的底部,下一步开始从下往上移动。state3:200x200的方块到达显示屏的右部,下一步开始从右往左移动。三、设计分析简单来说,就是200x200的方块移动到显示屏的边缘时变换方向,可
2021-01-08 21:51:11
3204
3
原创 14.基础实验(3)vga显示
基础实验(3)vga显示一、实验内容实验要求实现vga接口显示,可以将需要发送的数据显示屏幕上。实验环境实验平台:特权同学Cy4_Altera开发板实验软件:Quartus 18.1 + Modelsim 10.7主控芯片:EP4CE6E22C8二、系统框图VGA实现的接口时序,即hsync和vsync都为高有效(其中一种)。不论是vsync,还是hsync,都是在addressable video区域输出有效的数据,而hsync是在front_porch后出现信号。三、设计分析根
2021-01-06 10:41:17
1463
1
原创 13.基础实验(2)异步串口收发的实现
异步串口收发的实现一、实验内容实现串口接收来自串口调试助手发送的数据,然后直接通过自己实现的串口程序将数据发送出去二、系统框图三、设计分析从串口接收开始,这个比较容易实现。参考链接串口通信协议不考虑奇偶校验位,一个字节的串口的发送过程,包含1个低电平的起始位,一个高电平的停止位,中间8个数据位,且数据位是从低位发送到高位。只要保证前一刻为高电平,下一时刻为低电平,则可以确定开始串口开始接收数据,因为不发送数据时,即空闲状态下相应的电平为高电平。从起始位开始,检测串口的数据的接收。延时一个半
2021-01-05 19:47:08
776
原创 12.基础实验(1)按键检测
基础实验(1)按键检测按键检测实际上是一个很简单的实验,关键在于画出时序图。设计分析时序图出来了,就搞定了。时序图如下。时序图设计的代码如下。{ signal: [ { name: "key", wave: "h..........lh.l.h..l...................................h.l.h..l.h.......", period:0.2 }, { name: "key_cnt", wave: "=..==============", dat
2020-12-21 22:12:55
1994
原创 11.SCCB接口时序的实现
练习8 SCCB接口时序的实现SCCB接口时序与IIC协议基本一致,是其简化版本,且SCCB协议兼容IIC协议。基本时序介绍最常用的时序是3线控制数据传输的方式,基本时序图如下。具体的控制信号,则是先发送起始信号,再发送数据,最后发送停止信号。其中,3相数据传输又是最常用的方式。起始信号为scl有效时,sda拉低。停止信号为scl有效时,sda拉高。正确的有效数据是scl为高电平时,sda保持不变,从而正确地读取数据,正好在时钟的上升沿读取有效数据。3相数据发送,即先发送器件地址,
2020-12-15 22:02:53
2917
原创 10.时序图绘制软件WaveDorm的使用
时序图绘制软件WaveDorm的使用参考路径:Hitchhiker 的 WaveDrom 指南github链接 信号的定义首先,从官方的参考开始分析。 官方的第一个例子如下。代码是这样的。{ signal: [{ name: 'Alfa', wave: '01.zx=ud.23.45' }] }获得的结果呢,是这样的。我们可以据此呢,得到一些答案。绘制成如下的表格。一个符号代表的是一个周期。时钟的定义还是官方的例子。代码...
2020-10-04 18:59:17
1931
原创 9.SDSoC 调试技巧
SDSoC 调试技巧SDSoC整合了HLS、Vivado和SDK三个软件,使得整个硬件加速变得简单,那么整个系统绝对不会显得很简单,这其中必然包括一些有效的调试技巧,下面一一进行介绍。下面的所有技巧都可以在ug1028文件中找到,可以仔细看看这篇文章。软硬件资源评估首先,在SDx Setting中,选中Estimate performance这个box 然后,build project编译完成后,可以看到如下的效果。上面的是硬件资源的评估暂用情况。点击其中的cl...
2020-10-04 18:47:11
523
原创 8.caffe环境搭建与使用
caffe环境搭建与使用一、Ubuntu17.10版本以后caffe环境搭建 ubuntu17.10版本以后,caffe环境就嵌入了相应的环境中,不再需要独立编译和配置。具体可以参考以下的链接。 参考链接:ubuntu18.04安装caffeUbuntu18.04安装caffe(简单 快捷) 具体说来,就是apt-get install caffe-cpu 或者apt...
2020-04-15 14:22:16
459
原创 7.STM32 HAL库实现UART的不定长度DMA数据传输(二)
STM32 HAL库实现UART的不定长度DMA数据传输(二)目录 STM32 HAL库实现UART的不定长度DMA数据传输(二)一、开发环境二、项目需求三、项目分析1.参考链接2. 实现分析四、练习步骤1.UART、DMA、时钟等基本配置2.不定长数据接收实现3.测试结果五、软件调试六、总结与讨论...
2020-01-09 11:18:23
2125
原创 6.STM32 HAL库实现UART的不定长度DMA数据传输(一)
STM32 HAL库实现UART的不定长度DMA数据传输(一)一、开发环境 软件环境:keil、STM32CubeMX 硬件环境:STM32F407VGT7 二、项目需求 实现UART的不定长度DMA数据传输 要求使用HAL库 三、实现步骤1.STM32CubeMX软件的基本配置(1)下载接口配置...
2020-01-08 15:46:58
2638
原创 5.FPGA边沿检测及亚稳态的消除
FPGA边沿检测及亚稳态的消除一、FPGA边沿检测的实现 边沿检测主要包括上升沿和下降沿的检测 1.原理 上升沿是指从低到高的电平转变,而下降沿是指从高到低的电平转变 上升沿 下降沿 那么如何判定上升沿和...
2019-10-08 23:21:21
687
原创 4.去除毛刺的一种方法
去除毛刺的一种方法在学习FPGA的过程中,我们一直在进步,也一直在同一个问题上有所突破。对于去除毛刺这个问题,我们一直在寻求更好、更简便的方式。最近,得一良方,现写出来进行分享。 说明 首先,需要说明的是,对于脉冲小于一个时钟周期的毛刺,只要不在数据的采集时刻(一般是在时钟的上升沿)进行干扰,可以...
2019-09-30 11:09:51
5537
原创 3.Quartus II FIFO IP的使用——以SCFIFO为例
3.Quartus II FIFO IP的使用——以SCFIFO为例参考链接FPGA基础学习(2) -- FIFO IP核(Quartus):https://www.cnblogs.com/rouwawa/p/7066635.html对altera的FIFO读写操作深入研究:https://www.cnblogs.com/estop-jfw/...
2019-05-27 18:16:24
4929
原创 2.cycloneIII系列FPGA下载模式的配置
2.cycloneIII系列FPGA下载模式的配置参考链接FPGA下载电路设置 AS 和JATG:https://www.cnblogs.com/LJWJL/archive/2013/03/12/2956678.htmlFPGA上电加载时序介绍:http://tech.oneyac.com/article/detail/51677.html...
2019-04-29 22:44:08
3318
原创 1. FPGA复位电路的实现——以cycloneIII系列芯片为例
1. FPGA复位电路的实现——以cycloneIII系列芯片为例 目录 参考链接:总计:方式一:普通IO口加上按键复位电路和上电自动复位电路方式二:nCONFIG引脚输入信号作为系统复位方式三:用其他MCU控制FPGA的上电复位,既可以将MCU的复位引脚和FPGA的复位引脚连在一起,也可以MCU单独引脚复位引脚对FPGA进行控制。总结与讨论:疑问:...
2019-04-29 11:11:48
4773
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人