- 博客(83)
- 收藏
- 关注
原创 Linux学习笔记——vi编辑器
三种模式命令模式 进入vi编辑器后的默认模式,在命令模式中,每一个按键都有其他的功能 输入模式 每一个按键按下什么,就向文本数据中输入什么 底行命令模式 可以直接在vi中输入特定的命令 模式切换a 追加:从光标当前位置后面开始输入字符(光标后移一个位置) i 插入:从光标当前位置的前一个位置开始输入字符(光标不会动) o 下一行:从光标当前位置下一行开始输入字符(光标转到下一行) I 行首:从光标当前所在行的行首开始输入 A 行尾:从光标当前所在行的行尾开始输
2022-01-30 23:38:28
1410
原创 Linux学习笔记——文件系统
内存使用部分目录说明/binbin是Binary的缩写,这个目录存放着最经常使用的命令/boot存放的是启动Linux时使用的一些核心文件,包括一些连接文件和镜像文件/etc用来存放所有的系统管理员所需要的配置文件和子目录/lib存放着系统最基本的动态连接共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。/lost+found一般情况下是空的,当系统非法关机后,这里就存放了一些文件/medialinux系统会自动
2022-01-28 22:33:16
1299
原创 Linux学习笔记——特殊字符
.(点) 如果文件的开头是.,说明当前文件是一个隐藏文件 .指向当前目录 ..指向当前目录的上级目录 ../../返回两级目录 $ 说明这是一个变量 $PATH Linux的环境变量 *星号 通配符 ll /etc/a* //查看etc下所有a开头的文件信息 ~ 当前用户的家目录 每个用户 的家目录是不同的 root用户的家目录在根目录下 其他用户的家目录在/home/用户名为家目录 空格 Linux..
2022-01-27 17:32:08
314
原创 Linux学习笔记——虚拟机快照与克隆
拍摄快照 记录虚拟机的当前状态 拍摄快照的时候一定要关机 转到 回到某一个历史快照节点 克隆 复制某一个历史快照节点 克隆可以更快的创建一个新的虚拟机,只是创建后需要配置一些参数,虚拟机名称,ip地址等等 克隆的方式 链接克隆 当前节点文件夹只存储差异性数据 相同的数据存放在原始节点上 优点:节省硬盘空间 缺点:耦合性高,原始节点删除后,该节点也将不能使用 完整克隆 基于原始节点完全拷贝到新节点的文件夹中..
2022-01-27 16:24:30
2675
原创 Linux学习笔记——网络组成
网络连接的概念 IP地址(IPADDR) IP地址是一种逻辑地址,用来标识网络中的一个主机 IP地址=网络地址+主机地址 IP地址是一个4*8bit(一字节)由0/1组成的数字串(IPV4协议) 子网掩码(NETWORK) 子网掩码只有一个功能,就是将IP地址划分为网络地址和主机地址 子网掩码用来判断任意两台计算机的IP地址是否在同一个子网的根据 默认网关(GETWAY) 连接两个不同的网络设备都可以叫网关设备;网关的作用就是实现两个网络之间的通讯与
2022-01-27 14:17:09
3341
原创 Linux学习笔记——常用指令
常用命令 reboot 重启 poweroff 关机 logout 登出 ls 查看当前目录下所有的文件和目录 ls -l(ll) 查看当前目录下所有文件的详细信息 ls install.log 单独查看当前目录下名为install.log的文件,一般用来确认当前目录是否存在该文件 ls -l install.log 单独查看当前目录下名为install.log文件的详细信息 ls / 查看根目录下所有文件及目录 ls /ro
2022-01-25 23:22:27
457
原创 ESP8266连接阿里云(STM32)
一、概述 之前通过串口调试助手+ESP8266已经连接上阿里云了ESP8266连接阿里云(串口调试助手)这次我们使用STM32+ESP8266来接入阿里云,其实本质上就是STM32和ESP8266进行串口通信,相当于使用STM32代替之前使用的串口调试助手来发送AT指令。只是发送的字符串数据可能有些细节需要注意一下。二、保存连接的AT指令 定义几个字符串数据保存需要发送的AT指令//注意://末尾记得加\r\n//字符...
2021-12-28 00:31:25
42897
56
原创 ESP8266连接阿里云(串口调试助手)
参考链接:ESP8266 AT MQTT 透传指令接入阿里云物联网平台笔记配置连接参数 使用阿里云物联网配置助手配置参数连接 使用串口调试助手发送AT指令进行连接,可能有的串口调试助手在你发送AT之后没有反应,如下图,只能收到乱码的复位信息,剩下的ready ok等的都收不到,在发送AT后也没任何反应先不用怀疑是不是固件或是什么连接的问题,可以换一个串口调试助手试一下(我就是换一个串口调试助手就好了)然后开始发送AT指令AT+MQTTUS...
2021-12-23 21:04:41
17279
24
原创 FPGA串口通信
一、概述 串口收发时序参考 起始位:拉低数据线,传输一个0作为开始信号 停止位:拉高数据线,传输一个1作为结束信号 波特率:1秒钟传输多少位,例如波特率为115200就是一秒钟可以传输115200位数据 设计中需要注意的点:1、严格按照时序设计,先发送低位再发送高位 2、系统时钟计数,fpga的时钟频率都是很高的,需要对时钟计数来确认发送一位的时钟数,定义一个常量来保存最大的计数值,...
2021-12-08 23:57:05
1179
原创 FPGA(主)与STM32(从)SPI通信
一、概述 主要实现了FPGA向STM32快速发送数据(比较稳定),至于STM32发送过来的数据,大概率还是处于丢位状态。但因为我主要是要完成一个FPGA这边持续向STM32的发送,所以我也没仔细去研究如何实现双方通信更稳定(同时本人能力也有限)。 至于SPI的通信时序,有四种模式,我选择的是空闲状态为高电平,采集在上升沿的一种模式。具体的时序可以参考其他博客,我自己的理解(以我选择的这种模式)就是在sck为低电平的时候寄存数据,然后一直保持数据到下一次sck为低电平。获取...
2021-12-06 18:55:17
6635
10
原创 FPGA驱动LCD1602(IIC) Verilog代码(四)------ 顶层模块
一、概述 顶层模块就是例化lcd初始化模块和写命令/数据模块,然后把两个模块连接起来就完成了 先贴一下最后实现的效果图 顶层模块代码如下二、Verilog代码module lcd_drive( input clk, //时钟信号 50m input rst_n, //按键复位 output scl, //iic scl inout sda //iic sda);wire clk_1m; //1m的时钟信号wire ...
2021-12-04 15:49:08
3086
4
原创 FPGA驱动LCD1602(IIC) Verilog代码(三)------ LCD初始化
一、概述: 前面已经完成了lcd写数据/命令,那么lcd的初始化就比较简单了,就是先发送命令复位设置lcd,然后发送数据过去交给lcd显示就好了。 lcd的显示比较简单一点,只需要传输要显示字符的ascll码,lcd就会显示出该字符,而且支持自动的移位,即显示完一个字符后接着自动确定下一个字符的显示位置,不过需要指定方向好像,这个我没有研究(毕竟指令都是嫖来的)二、Verilog代码module lcd_init( input clk, //时钟信号...
2021-12-04 15:41:01
2357
原创 FPGA驱动LCD1602(IIC) Verilog代码(二)------ LCD写命令/数据模块
一、概述 时序及数据参考链接:51单片机 使用IIC转接板驱动LCD1602 lcd1602引脚说明参考链接:STM32通过(软/硬IIC)控制LCD1602液晶显示屏(IIC转8位并口的PCF8574转接板的使用)原创 (图片来自上述链接) 写数据和写命令的操作基本上都是一样的,只是最后以为不一样,所以就增加一个输入信号来控制是写数据还是...
2021-12-04 15:23:44
2332
原创 FPGA驱动LCD1602(IIC) Verilog代码(一)------ IIC写模块
一、概述IIC时序参考链接:51单片机 使用IIC转接板驱动LCD1602 基本参考该链接中的IIC时序,使用Verilog代码来实现IIC写模块。只是比较好奇为什么在所有位发完之后,scl还要拉低再拉高了(我没有这样做的时候会一直收不到ack信号)? 需要注意IIC SDA信号的写法,声明为in_out,它是作为wire类型一样来进行赋值的。接着注意SDA的方向控制,要及时释放掉控制权。 下面直接贴出代码二、Verilog代码...
2021-12-04 15:06:48
2221
原创 FPGA驱动OLED Verilog代码 (五)------ 动态显示字符
一、概述 前面已经介绍了向RAM中写入静态字模数据来显示静态的字符和汉字。接下来实现动态显示字符在OLED屏的不同位置。动态显示字符的核心就是从ROM中读取字符的字模,但取出来的字模数据如果直接写进RAM的话,只能实现字符在某一页的显示,而不能实现任意坐标下的显示。所以在写进RAM之前,我们应该对字模数据做一定处理,然后再写进RAM中。接着RAM读取模块(前面已经介绍过了,本次会改变等待的值,提高一下刷新率)会不断的读取字模数据进行显示。 这里可以先参...
2021-11-29 19:54:24
3177
7
原创 Modelsim添加中间变量
参考链接:Modelsim查看中间变量 原文我自己感觉不怎么好理解,所以自己又总结了一下)编译好编写的仿真文件后,点击需要仿真的文件开始仿真点击后界面如图看到Objects界面只有我们在仿真文件中定义的变量(也就是例化模块的输入输出变量),并没有我们例化的模块的中间变量 然后我们可以看到左侧sim窗口有我们例化的模块,点击该模块,就可以将模块内部的中间变量加入到仿真波形中...
2021-11-28 14:56:54
4420
2
原创 FPGA驱动OLED Verilog代码 (四)------ 字符和汉字显示
一、概述: 首先先展示一下成果图,然后主要使用RAM的读写来完成,下面依次介绍各个模块二、OLED显示原理(部分) oled分为7页,每一页有128个字节用来显示 首先先设置页地址,然后设置列的低地址和高地址(这里不是很理解,设置扫描方向吗?) 设置好后依次写入128个显示数据,完成一页的显示,如果你的字模为8*8的,那这样就能完整显示出一个字了(如下图x一样) 但是如果字体的高度大于8怎么办了?...
2021-11-27 17:01:00
4846
7
原创 FPGA驱动OLED Verilog代码 (三)------ 顶层模块 点亮OLED
一、代码顶层模块比较简单,直接实例化各个模块进行连接就好了代码如下:module oled_drive( input clk, //时钟信号 50MHz input rst_n, //按键复位 output oled_rst, //oled res 复位信号 output oled_dc, //oled dc 0:写命令 1:写数据 output oled_sclk, //oled do 时钟信号 output oled_mosi //oled d1 数据信...
2021-11-26 00:42:12
3323
13
原创 FPGA驱动OLED Verilog代码 (二)------ OLED初始化
一、概述: 逐字节发送初始化命令给OLED,设置OLED的一些寄存器。当然,我自己肯定也没有去研究过应该发哪些命令(毕竟用32的使用都是直接copy的代码),然后现在也是参照之前32驱动OLED的初始化命令来实现OLED的初始化。 先贴一份32的代码(大伙也可以自己去改编为Verilog来练练手)void OLED_Init(void){ OLED_SPI_Init(); OLED_CLK = 1; OLED_RST = 0; OLED_DLY_ms(10...
2021-11-26 00:13:56
5969
2
原创 FPGA驱动OLED Verilog代码 (一)------ SPI写模块
概述: 我本身没有很仔细的去学习SPI的时序,而是参照了之前STM32驱动OLED时模拟的时序来写的,其中写一个字节的时序如下/*************************************************************************//*函数功能: 通过SPIO软件模拟SPI通信协议,向模块(SSD1306)写入一个字节 *//*入口参数: ...
2021-11-25 23:49:07
2689
5
原创 HDLBits学习------Problem 173~177(完结)
Problem 173Clock 问题:编写testbench产生一个驱动时钟信号,来驱动模块dut,时钟周期为10ps 解决:`timescale 1ps/1ps //仿真单位为1ps,精度为1psmodule top_module ( ); reg clk; dut dut_inst(clk); initial begin #0 clk = 0;//clk初始为0 end always #5 clk = ~clk;//每5个时钟单...
2021-11-24 19:07:00
516
原创 HDLBits学习------Problem 163~172
Problem 163Combinational circuit 1 问题:通过仿真波形实现电路 思路:通过波形可以看出来是一个与门解决:module top_module ( input a, input b, output q );// assign q = a & b; // Fix meendmodule 居然一开始看成了同或门Problem 1634 Combi...
2021-11-24 13:04:59
163
2
原创 HDLBits学习------Problem 158~162
参考连接:HDLBits导学Problem 158 Mux 问题:这个 8 位宽的 2 选 1 选择器不起作用。修复错误 原代码:module top_module ( input sel, input [7:0] a, input [7:0] b, output out ); assign out = (~sel & a) | (sel & b);endmodule 解决:...
2021-11-23 23:53:47
428
原创 HDLBits学习------Problem 151~157
参考链接:HDLBits导学Problem 151 Counter with period 1000 问题:构建一个从 0 到 999(包括 0 到 999)计数的计数器,周期为 1000 个周期。复位输入是同步的,应将计数器复位为 0 解决:module top_module ( input clk, input reset, output [9:0] q); always @(posedge clk) begin if(...
2021-11-23 17:41:28
658
原创 HDLBits学习------Problem 138~150
参考链接:HDLBits导学Problem 138Q8: Design a Mealy FSM 问题:实现一个Mealy类型的有限状态机,识别序列“101”,输入信号为x 。您的 FSM 应该有一个输出信号z,当检测到“101”序列时,该信号输出逻辑 1。您的 FSM 还应该有一个低电平有效的异步复位。您的状态机中可能只有 3 个状态。您的 FSM 应该识别重叠序列 解决:module top_module ( input clk, input...
2021-11-22 19:33:57
601
原创 HDLBits学习------Problem 131~137
参考链接:HDLBits导学Problem 131One-hot FSM / Fsm onehot 问题:下图是具有1个输入和2个输出的状态转移图:假设该状态机使用独热码,state[0]到state[9]分别对应于状态S0到S9。图中没有标注的输出均为0。下面请实现状态机的状态转移逻辑和输出逻辑(不需要实现状态触发器)。 模块的输入是当前状态state[9:0],输出下个状态next_state[9:0]和电路的两个输出out1和out2...
2021-11-22 00:12:07
538
原创 HDLBits学习------Problem 127~130
参考链接:HDLBits导学Problem 127 Lemmings1 问题:游戏旅鼠涉及到有非常简单的大脑的生物,我们将会使用有限状态机(FSM)对其建模。在旅鼠的2D世界中,旅鼠只有两种状态:向左走和向右走。当它遇到一个障碍物的时候,会转变方向。特别是,如果旅鼠被左侧撞到,它将会向右走,被右侧撞到,将会向左走。如果被两侧撞到,它依然会转换方向。用两状态,两输入,一输出的摩尔型状态机对其行为建模 解决:module top_module( ...
2021-11-21 12:59:55
420
原创 HDLBits学习------Problem 118~126
参考链接:HDLBits导学Problem 118 Simple FSM1 / Fsm1 问题:图中是一个有两个状态的摩尔型状态机。有一个输入信号与一个输出信号。本题中需要实现图中的状态机,注意复位后状态为 B,复位采用异步复位 思路:三段式状态机,详细解释参考上面链接三段式分别指状态跳转逻辑 状态触发器实现 输出逻辑解决:module top_module( input clk, input areset, ...
2021-11-21 00:17:08
515
原创 HDLBits学习------Problem 115~117
参考链接:HDLBits导学Problem 115 Rule90 问题:Rule90 是一道根据一些有趣的规则来生成一维序列的题目。规则很简单。一维序列中元素有 1,0 两种状态,分别对应开,关状态。在每个时钟边沿到来时刻,元素的下一个状态为元素相邻两个元素的异或。下表更详细地给出了跳变的规则,(可以视为状态转移表),元素下一个状态可以视作输出,输入为元素本身的状态与相应两个相邻元素的当前状态对于需要实现的电路,创建一个拥有 512 个元素的序列 ...
2021-11-20 15:02:40
626
原创 HDLBits学习------Problem 106~114
参考链接:HDLBits导学Problem 106 4-bit shift register 问题:设计一个4bit异步复位,拥有同步置位和使能的右移移位寄存器。areset : 寄存器复位为0 load : 将data[3:0]输入至移位寄存器中 ena : 使能信号控制向右移动(q[3]q[2]q[1]q[0] ---> 0q[3]q[2]q[1],q[0]在移动后消失了,原先q[3]的位置变为0) q : 移位寄存器中的数据如果ena和load同时为高,load...
2021-11-19 19:39:52
612
原创 HDLBits学习------Problem 98~105
参考链接:HDLBits导学Problem 98 Four-bit binary counter 问题:设计一个4bit的计数器,从0~15,共16个周期。reset是同步复位且复位为0 解决:module top_module ( input clk, input reset, // Synchronous active-high reset output [3:0] q); always @(posedge clk)...
2021-11-18 22:01:49
690
原创 STM32F429 HAL库 DAC+DMA+TIM6外部触发产生波形
DAC配置DAC_HandleTypeDef DAC1_Handler;//DAC句柄void DAC_Timer_Init(u16 arr,u16 psc);//初始化DACvoid DAC1_Init(void){ DAC_ChannelConfTypeDef DACCH1_Config; DAC1_Handler.Instance=DAC; HAL_DAC_Init(&DAC1_Handler); //初始化DA
2021-11-17 17:36:05
2458
3
原创 HDLBits学习------Problem 80~97
参考链接:HDLBits导学Problem 80 : D flip-flop (Dff) 问题:实现一个D触发器 解决:module top_module ( input clk, // Clocks are used in sequential circuits input d, output reg q );// // Use a clocked always block // copy d to q ...
2021-11-17 13:11:00
624
原创 HDLBits学习------Problem 72~79
参考链接:HDLBits导学Problem 72 3-variable 问题:根据卡诺题来实现电路: 思路:使用卡洛图得到表达式第一个方框中,只有b的值保持不变且为1,所以这个框化简出来是b第二个方框中,只有c的值都保持不变且为1,所以这个框化简出来是c第三个方框中,只有a的值保持不变且为1,所以这个框化简出来是a最后三个表达式加起来就是最后的表达式,转换到verilog中就是或‘|’的关系解决:module...
2021-11-17 00:14:10
389
原创 HDLBits学习------Problem 65~71
参考链接:HDLBits导学Problem 65 : Half adder (Hadd) 问题:本题中需要实现一个 2 进制 1bit 加法器,加法器将输入的两个 1bit 数相加,产生两数相加之和以及进位 思路:参考全加器的写法 解决:module top_module( input a, b, output cout, sum ); assign sum = a ^ b;assign cout = a &...
2021-11-16 22:13:58
279
原创 HDLBits学习------Problem 60~64
参考链接:HDLBits导学Problem 60 : 2-to-1 multiplexer (Mux2to1) 问题:本题中需要实现一个 2 选 1 选择器,sel 信号作为选择信号,当 sel = 1 时选择 b,反之选择 a 解决:module top_module( input a, b, sel, output out ); assign out = sel ? b : a;endmoduleProblem 61 : 2...
2021-11-16 19:14:57
752
原创 STM32F429 HAL库ADC+DMA+TIM3外部触发配置
一、ADC部分ADC_HandleTypeDef ADC1_Handler;//ADC句柄u16 ADC_DMA_ConvertedValue[3];void Adc_Timer_Init(u16 arr,u16 psc);//初始化ADC//ch: ADC_channels //通道值 0~16取值范围为:ADC_CHANNEL_0~ADC_CHANNEL_16void MY_ADC_Init(void){ ADC_ChannelConfTypeDef ADC1_ChanConf
2021-11-16 12:56:52
3801
2
原创 HDLBits学习------Problem 43~59
参考链接:HDLBits导学Problem 43 Wire 问题:实现如下电路 解决:module top_module ( input in, output out); assign out = in;endmoduleProblem 44 GND 问题:实现如下电路 解决:module top_module ( output out);assign out = 0;...
2021-11-15 21:23:44
498
原创 HDLBits学习------Problem 36~42
参考链接:HDLBits导学Problem 36: Conditional ternary operator(Conditional) 概述:Verilog跟C语言一样有一个三元运算符( ? : )condition ? if_true : if_false问题:给出四个无符号数,请找到其中的最小值。无符号数可以使用比较运算符进行比较(a<b)。使用条件运算符描述一个两路的最小值电路,然后组合它来创建一个4路最小电路。 可能需要一些wire变量用于表述中...
2021-11-15 16:42:40
269
原创 HDLBits学习------Problem 28~35
参考链接:HDLBits导学Problem 28: Always blocks(combinational) (Alwaysblock1) 问题:使用assign语句和组合always块来构建与门 解决:// synthesis verilog_input_version verilog_2001module top_module( input a, input b, output wire out_assign, ...
2021-11-14 09:47:24
230
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅