- 博客(15)
- 收藏
- 关注
原创 Verilog 以及 FPGA 学习笔记(1)
原因(结合笔者理解):无论哪种方式,得到的时钟信号有一个重要的作用就是作为触发器的时钟触发沿,对于FPGA的PLL的IP核来说,其输出的CLK信号仍然是全局时钟线,这类线具有较低的传输延迟,在时序时刻到达各自的触发器时延迟较小,而上述的第一种产生时钟的方式,其时钟线仅是普通的信号线,当我们利用该时钟线去连接不同位的触发器时,触发器各自的时钟信号可能存在延迟,导致数据出错,所以不推荐使用第一种方式。通常选择读热码,编译器会生成一个比较器,这个比较器只比较一位,节省了组合逻辑资源,但状态变量的位宽要更多。
2025-01-09 00:07:59
1097
原创 STM32 I2C通讯协议的硬件配置
Tpclk1就是模块的时钟周期,由CR2设置的,当CR2设置成最高频率时,Tpclk1为 1/36 us,标准模式的时钟周期是10us,占空比为50%情况下,高电平应该是5us,也就是说,CCR配置成180时就完成了当前模块时钟下,标准模式I2C的时钟频率的设置。对于STOP位,也不是立马发送stop位,实际是一个配置项,延时生效,准备发送stop位。发送和接收使用一个数据寄存器,等发送寄存器为空时,再把当前数据写入数据寄存器。收发数据的标准模式只有100Kb/s,因此需要下方的CCR配置时钟。
2024-11-15 01:23:28
866
原创 STM32 I2C通讯协议
因为数据传输位 为读时是高电平,即发送方表达要对从从设备读时,就将总线SDA的所有权让了出去,这时还没有表明要读的寄存器的地址。而EEPROM中有一个地址计数器,每次读取默认从上一次读的位置。对于使用的芯片,一次最多只能写一页,也就是16个字节,如果超过16个,EEPROM会覆盖本页。开始传输时,第一件事是通过从设备的地址 SLAVE_ADDRESS 找从设备。LSB是传输方向位(从主机角度看),高电平向从机读,低电平向从设备写。假写的功能就是将地址计数器的存放的地址改成为指定的地址。的策略,如上图所示。
2024-11-04 03:09:03
430
原创 FPGA学习笔记(6)——计数器实现奇分频
以5分频为例,如果仅是对系统时钟下构造的计数寄存器的仅上升沿或下降沿进行输出时钟的翻转,总是无法得到占空比为50%的方波信号,由上图,可以利用上升沿、下降沿分别的触发的clk1,clk2进行。,便可以得到要求的(5分频)的信号。
2024-11-02 13:55:44
209
原创 Verilog实现32位加减法电路
加法:sub = 32’h0000_0000即可,正常的两个16全加器联合用做32位全加器。整个加法-减法器包含了两个16位全加器以及一个异或门实现a+b和a-b功能。图片截取自HDLbits的作业题目“adder-subtractor”。最终共同完成对b的相反数的补码做加法,即对b的减法。减法:当sub为1‘b时,对进行异或操作,即。
2024-10-16 02:34:05
929
原创 FPGA学习笔记(5)——阻塞赋值与非阻塞赋值
(1)在编写时序逻辑的代码时采用非阻塞赋值的方式(2)使用 always 块来编写组合逻辑的代码时要用阻塞赋值的方式(3)在同一个 always 块中不要既要用非阻塞赋值又用阻塞方式赋值(4)虽然锁存器电路建模是不推荐的,但是如果使用到要采用非阻塞赋值的方式。(5)一个 always 块只一个变量进行赋值。
2024-10-15 01:01:18
522
原创 STM32F103xx学习笔记(2):串行与并行通讯——框架尚硅谷SEM32视频教程
使能位TE,RE,在16位寄存器BRR中配置,高12位为整数,低四位为小数。在UART的基础上拓展更多协议,衍生出RS-232,RS-485电气标准,其中RS-485使用差分传输,但是双线半双工,RS-422使用4线差分做到全双工。先从低位发送,起始位是0,停止位必须是1,默认是1,也就是空闲位。一般校验位和M位配合使用,数据位位9位时,配合打开校验位,使其中一为位校验位。设置波特率,14位整数,4位小数,寄存器值为0x271时,设置波特率为115200.串行:按位传输,一次传输一位。
2024-10-13 21:11:24
894
原创 FPGA学习笔记(4)——时序逻辑电路入门
(原理或许是触发器只是将储存的逻辑值传给输出Q,输入信号改写逻辑值需要延迟时间,这是否是一种竞争?对比可以发现,对于同步置零端,仅仅通过改变输入端的逻辑组合就可以实现。更推荐使用异步复位。:课程中提到:如果边沿触发的时钟信号和输入信号变化沿对其了,则认为该次触发。可以发现,确实如上面所说,若输入信号端变化沿对其,该次触发。,打印的信息是该时刻后一段时间的逻辑值。对应的test bench。
2024-10-11 18:52:05
387
原创 FPGA学习笔记(3)——verilog基础入门以及组合逻辑电路
对于简单的组合逻辑电路的仿真,更像是编写一个没有输入输出的verilog文件来产生一些激励源,其中,会用到一些系统函数比如打印信息使用的$monitor,从上到下的设计中,可以调用子模块来构成更大的模块,其中,可以通过wire语句定义连线,还要注意整个项目文件的头模块实体是哪个。在同步电路中,是不希望产生Latch的,会让静态逻辑分析变得复杂。这里直接参考这位博主的文章,能够加深对$time的函数理解。例如下面的运行快,在每一次。
2024-10-07 17:22:44
623
原创 FPGA学习笔记(2)——按键控制LED
因此只需要描述一个模块,将按键控制的引脚端口直接传给LED引脚端口就可以实现,保持按下按键就点亮LED,抬起就熄灭LED。在设置好quarts和modelsim的联动后,设置好编译启动“RTL simulation”,选择tb_led.v文件,设置仿真时间,仿真文件存放位置,自动打开modelsim,modelsim编译后,进行仿真,得到时序图,确认时序图是否符合设计逻辑。首先,在quarts||中创建工程,导入写好的led.v文件,先进行编译,查看是否有编译错误。
2024-10-07 00:26:09
1053
原创 STM32F103xx学习笔记(一)-系统架构,GPIO,时钟系统,中断系统。-基本框架尚硅谷SEM32视频教程
HAL是基于BSD许可协议的开源代码,可用作商业用途,一致性强。标准库中的CMSISI coterx microcontroller software interface standard,是跟供应商无关的硬件抽象层,这来源于ARM。STM32CubeMX提供了一个图形化的配置窗口(清晰的时钟树图形化,以及引脚复用功能的快速选择···),创建项目时可以生成配置文件。HAL库函数隐藏了底层寄存器操作,更易读,类似Arduino?
2024-10-03 15:53:52
844
原创 【适合新手】适合嵌入式入门的Arduino框架的DIY物联网开源项目复现——Visitors Counter
使用传感器检测房间拜访人数的监控系统,能够将监控信息上传到物联网平台Blynk上的开源DIY入门项目
2024-09-21 15:23:14
2265
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人