- 博客(155)
- 资源 (3)
- 收藏
- 关注
原创 虚拟机添加共享文件夹后仍无法显示文件
参考: https://blog.youkuaiyun.com/Pretender_1205/article/details/134859089。进入/mnt/hgfs目录下执行。
2024-10-04 15:42:09
471
1
原创 试商法除法器
过程类似于十进制除法。对于32位的除法,至少需要32个时钟周期,才能得到除法的结果。取出被除数的最高位m[k], 使用被除数的最高位减去除数n ,如果结果大于等于0, 则商的s[k] 为1,反之为0如果上一步得到的结果为0,表示当前被减数小于除数,则取出被除数剩下的值的最高位m[k-1],与当前被减数组合作为下一轮被减数。如果上一轮得到的结果是1,表示当前被减数大于除数,则利用上一轮中减法的结果与被除数剩下的值的最高位m[k-1]组合作为下一轮的被减数。然后,设置k等于k-1。
2024-09-09 23:03:09
806
原创 快速幂算法
快速幂算法能帮我们算出指数非常大的幂,传统的求幂算法之所以时间复杂度非常高,就是因为当指数n非常大的时候,需要执行的循环操作次数也非常大。快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。此时指数由10缩减一半变成了5,而底数变成了原来的平方,求3^10 原本需要执行10次循环操作,求9^5却只需要执行5次循环操作。
2024-03-27 16:28:39
254
原创 TCL管理Vivado工程
no_ip_version选项用于去除IP的版本信息,方便工程在高版本vivado中打开的情况。这里采用将原工程中ip的xci文件直接拷贝到ip目录中的方式。将原工程的源文件、仿真文文件、约束文件拷贝到src目录下。如果工程有bd文件,生成对应的tcl脚本用于恢复工程。通过TCL Console 将目录切换到tcl目录。如果有多个bd文件,需要依次打开然后执行上述指令。( 需要打开对应的bd文件,不打开会找不到)在TCL Console执行。生成新建工程tcl脚本。添加仿真文件和约束文件。
2024-03-18 04:38:08
1795
原创 Linux内核队列queue.h
文章目录一、简介二、SLIST单向无尾链表2.1 介绍2.2 操作2.3 例子三、STAILQ单向有尾链表四、LIST双向无尾链表五、TAILQ双向有尾链表六、CIRCLEQ循环链表七、queue源码参考一、简介queue.h是一个非常经典的文件,定义了一系列宏的操作,它定义了一系列的宏操作,实现了链表,尾队列和循环链表。queue.h定义了5个基本的数据类型:单向无尾链表单向有尾链表双向无尾链表双向有尾链表循环链表queue相关链表/队列的使用流程为:定义自己的结构体在结构体中
2024-02-27 22:42:19
1159
原创 ZYNQ程序固化
ZYNQ Soc的启动和配置过程中,既需要PS的配置信息,又需要PL的配置信息。ZYNQ系列是没有办法只固化PL的程序的(NorFlash、SD卡等是连接在PS端的)。PS 支持多种片外非易失性存储器(Quad SPI Flash,NAND Flash,NOR Flash 或 SD 卡)。ZYNQ SoC 的启动由片上的BootROM开始。片上 BootROM 是 ZYNQ 芯片上的一块非易失性存储器, 它包含了 ZYNQ 所支持的配置器件的驱动,里面的代码是不可修改的。
2024-01-22 02:14:20
3179
原创 浮点数的表示
浮点数是与定点数相对的概念,计算机中的定点数约定小数点的位置不变。由于计算机字长的限制,当需要表示的数据有很大的数值范围时,不能直接用定点小数或者定点整数表示。浮点数由尾数MMM和阶码EEE构成。基数为2的数FFFF2E×MF2E×M尾数MMM必须为小数,用n1n+1n1位有符号定点小数的形式表示,可以采用原码、补码阶码EEE必须为整数,用k1k+1k1位有符号定点整数表示,可以采用原码、补码、移码浮点数的编码位数mn1k1mn。
2024-01-14 23:35:08
3667
2
原创 C++ 初始化列表
尽量使用初始化列表初始化,初始化列表的执行是在构造函数的用户代码之前。初始化列表只能初始化一次,初始化列表中的元素不能重复。对于自定义类型成员变量,会先使用初始化列表初始化。编译器允许构造函数赋初值和初始化列表初始化混用。C++提供了初始化列表语法,用来初始化属性。初始化列表的执行是先于构造函数的。只能在初始化列表初始化。
2024-01-07 01:25:25
624
原创 开源许可证
开源是指公开源代码,但这并不代表就是免费的。开源许可证是一种法律许可。通过它,版权拥有人明确允许,用户可以免费地使用、修改、共享版权软件。版权法默认禁止共享,也就是说,没有许可证的软件,就等同于保留版权,虽然开源了,用户只能看看源码,所以软件开源的话,必须明确地授予用户开源许可证。一般有两种主流的开源许可证著佐权许可证 ( Copyleft licence )宽松许可证( Permissive free software licence )
2024-01-06 21:23:56
524
原创 C#对象初始化器
对象初始化器是在构造器后使用的初始化赋值补充语法。在构造器后使用{},依次指定成员名和赋值表达式,以逗号进行分隔。对象初始化器不能为只读字段赋值。(可以对具有init访问器的属性进行赋值)一个实例构造出来的运行顺序成员上赋值的初始值构造器中的赋值对象初始化器赋值基本形式new 类名(参数){初始化表达式1, 初始化表达式2};无参构造器使用对象初始化器,可以省略括号new 类名{初始化表达式1, 初始化表达式2};
2024-01-04 14:51:29
925
原创 C#属性介绍
属性是代表类的实例或者类中的一个数据项的成员。属性是字段和方法的交集,指的是一组两个匹配的访问器方法。下面是属性的基本形式public 返回类型 标识符{set 访问器为属性赋值;get 访问器为属性获取值;属性包含两个代码块,分别以get和set关键字开头。get块包含读取属性时候执行的语句set块包含在向属性写入时执行的语句。set访问器拥有一个单独的、隐式的参数value,其类型与属性的相同set访问器返回类型为voidget访问器没有参数。
2024-01-04 14:22:55
2589
原创 SystemVerilog:always_ff,always_comb,always_latch
Verilog中只有一个通用的always过程块,SystemVerilog中追加了3个具有更明确目的专用always块。always_ffalways_ff, always_comb, always_latch分别是用于寄存器(flip-flop,代表时序逻辑sequential logic), 组合逻辑以及锁存器的建模。事实上,always_ff, always_comb, always_latch能实现的,always都能够实现。
2023-12-27 23:40:57
1265
原创 Verilog置换处理脚本
在Verilog中的置换处理,为将一个数据的数据位按照某种规则进行重新排列。以DES算法的初始置换为例初始置换将64比特的明文,按照初始置换表进行置换,得到一个乱序的64bit明文组。初始置换表如下:第一个数58表示,将明文M的第58位放置在第1位。
2023-12-27 21:46:31
468
原创 C语言结构体内存对齐
一段流式的内容,包含的是info_s类型的信息( 代码中的info_stream ), 直接通过强制类型转换的方式就无法正常解析。如下的info_s结构体类型,包含一个int型成员age, 一个char型成员gender, 一个int型成员id。可以看到id成员是从相对于头部位置,地址为8的位置开始的。单从数据成员的大小进行分析,整个结构体的大小应为9字节。可以查看成员的起始位置相较于结构体起始位置的偏移量。设置按照1字节对齐后,得到了结构体的大小为9个字节。id字段的解析是不正常的。
2023-12-26 21:53:51
689
原创 Verilog系统任务$random
random 是Verilog提供的一个随机数生成系统任务,调用该任务后,将会返回一个32bit的integer类型的有符号的值。
2023-12-26 16:30:41
1093
原创 Verilog RAM/ROM的数据初始化
FPGA设计中RAM和ROM作为存储器用来存储可变或不可变类型的数据。ROM初始化一般是加载固定数据,RAM声明时默认为不定态数据,初始化时可以让数据为全1或者全0。
2023-12-23 23:49:01
4616
原创 Verilog 字符串
一个字符串是由双引号"括起来并包含在一行中的字符序列。在表达式和赋值语句中,用作操作数的字符串被视为由8bit ASCII码值表示的无符号整数常量。
2023-12-19 20:26:07
2062
原创 STC15F100E单片机模拟串口
STC15F100系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,新一代8051单片机,指令代码完全兼容传统8051,但是速度快6-12倍。内部集成R/C时钟,5MHz~35MHz宽范围可设置,可以省掉外部晶振。内部集成复位电路,可省掉外部复位电路。6个通用I/O口,支持四种模式:准双向口/弱上拉、强推挽/强上拉、输入/高阻、开漏芯片管脚图。
2023-12-05 13:05:29
1566
原创 C语言assert断言
断言用来处理不应该发生的非法情况,而对于可能发生且必须处理的情况应该使用错误处理代码,而不是断言。默认情况下,assert宏只在Debug版本中才能够起作用,在Release版本中将被忽略。C语言中,断言被定义成宏的形式,原型在。的值来决定是否需要终止执行程序。断言是对某种假设条件进行检查。打印一条出错信息,然后通过调用。的值为假,将首先向标准错误流。函数终止程序运行,否则。
2023-11-10 22:41:53
445
原创 Flutter屏幕适配
如果要设置为正方形,要使用相同的单位( 同为w或者同为h ), 否则可能显示为长方形。rem是给根标签( HTML标签 )设置一个字体大小,其他所有的单位都使用rem单位(相对于根标签)。在一些手机中,顶部有刘海、摄像头等,底部有话筒等,这些位置不能填充组件,有被阻挡的风险。rpx是小程序中适配的方案,将750px作为设计稿, 1rpx = 屏幕。vw和vh是将屏幕分成100等分,1个vw相当于是1%的大小。Flutter使用的是类似IOS中的点pt(point)。基于视图窗口的单位。
2023-11-02 20:24:44
1437
原创 Verilog 函数和任务
在Verilog代码中,通过把代码分成小的模块或者使用任务(task)和函数(function),可把一项任务分成许多较小的、易于管理的部分,从而提高代码的可读性、可维护性和可重用性。函数和任务往往还是大的程序模块在不同地点多次用到的相同的程序段。函数(function):一般用于计算,或者用来代替组合逻辑。不能包含任何延迟;函数在零时间执行。函数只有input变量,虽然没有output变量,但可以通过函数名返回一个值。可以调用其他的函数,但不可以调用任务。
2023-10-29 21:57:26
1937
原创 Verilog编译预处理
编译预处理是Verilog HDL编译系统的一个组成部分。Verilog HDL编译系统通常先对这些特殊的命令进行预处理,然后将预处理的结果和源程序一起在进行通常的编译处理。为了和一般的语句相区别,这些预处理命令以符号 ` 开头这些预处理命令的有效作用范围为定义命令之后到本文件结束或到其它命令定义替代该命令之处。一般形式// 宏定义`define 宏名 宏内容// 使用宏`宏名宏名的有效范围为定义命令之后到原文件结束。宏定义是用宏名代替一个字符串,也就是作简单的置换,不作语法检查。
2023-10-17 17:32:55
1512
原创 Verilog generate
语句结构是通过判断语句执行代码块,也就决定了每次最多执行一个代码块,这种情况下,对各个代码块使用相同命名是合法的,并且有助于保持对代码的层次化引用。循环生成构造提供了一种简单而简洁的方法来创建模块项的多个实例,例如模块实例、分配语句、断言、接口实例等。后面的内容为标签名,是generate语句模块名,目的是通过它对循环语句进行层次化引用。本质上,它是一种特殊类型的for循环,其循环索引变量为 datatype genvar。第一个例子是对always块进行了循环,第二个则是对实例化时的模块进行了循环。
2023-10-10 00:52:50
724
原创 C语言纳秒级计时
C语言中常用的clock()函数只能精确到毫秒级,对应的数据类型是clock_t。C11标准中提供了纳秒级别定时器:timespec_get()函数与timespec()类型。
2023-10-09 21:36:56
1409
《自己动手写CPU》配套代码( 代码+工具)
2024-11-10
嵌入式开发常用辅助软件
2023-10-07
终端工具: WindTerm
2023-08-05
SD卡格式化工具SDFormatter
2023-08-03
海思Pegasus开发环境资源
2023-07-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人