自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 FPGA数字信号处理前沿

最后想整理一个数字信号处理的软件框架供,具有较强的通用性供大家项目参考,为了还原整个软件的实施,硬件上正在去绘制一个接口插件板,板载AD9220的ADC芯片和相关运放调节电路、配有低端MCU的STM32F103CBT6芯片和编码器按键、一个OLED屏幕,直插到现有的豌豆开发板CMOS摄像头端子上,MCU和FPGA间串口TTL电平通信,用户通过按键编码器在OLED屏幕上设定FPGA驱动AD9708的DAC芯片输出不同频率叠加的波形,硬件上通过SMA端子连接到AD9220的ADC芯片。

2024-03-24 14:11:14 798 1

原创 2024年第一篇博客

一颗STM32F407带有USBTMC、CAN、RS485、LAN等多种接口的通信板;2. 数字信号计算;MCU包括主流的ST和GD,DSP包括经典的TI C2000系列笔者会好好更新,再做几款精致的SOC外扩板插到豌豆开发板的CMOS摄像头连接器处,打造专业的MCU+FPGA和DSP+FPGA实战硬件平台,当然这里也会涉及到很多知识,而其中最主要的便是整个嵌入式软件架构可靠性的问题,笔者会围绕不同的硬件平台和实际需求,结合多年工作积累,做出一些源于真实项目的嵌入式软件架构体系。

2024-01-28 17:38:02 1955

原创 近期的工作生活

坦诚地说每周想去更新博客,但是工作、生活、家庭各方面因素被搁置了,撰写前两个博客专栏“FPGA基础知识”和“FPGA 20个例程”时也酝酿准备了很久,把市面很多教程和视频都研究了一遍,也查阅了很多经典FPGA设计书籍,最后的最后更结合了实际项目经验,CSDN也收到了很多留言和私信等。这几个月因为忙于单位的新项目所以很久没有更新博客了,面对新的需求和新的挑战也需要不断学习新的知识,甚至推翻老的惯性思维,这时想到一个老同事说过:研发如果不能迎难而上,那基本不太会有什么提高了。

2023-11-18 22:49:39 1385 4

原创 STM32 10个工程篇:1.IAP远程升级(六)

如图6所示是KEIL5中配置Application程序自动生成RTC.BIN文件的操作方法,因为KEIL中默认生成的是.HEX文件,而IAP升级中我们需要的是.BIN文件所以需要配置下在程序文件夹下的指定路径下生成.BIN文件,如图7所示是笔者自己编写的“豌豆升级IAP上位机软件”,在IAP升级过程中的截图。图5 WinHex插件打开的Application程序RTC.Bin文件内容。图6在KEIL5中配置Application程序自动生成RTC.BIN文件。图7 IAP升级过程中上位机的截图。

2023-10-06 17:49:31 1776 1

原创 STM32周末随笔

看上去似乎真的没必要步人后尘再去专门写STM32博客专栏,但是实际上当大家真正离开学校大门,步入工作岗位,就不难发现市面上大部分付费和免费的STM32方面教程只能做简单入门了解,不管从深度还是广度来说,很难支持你去独立地承担一个产品研发工作,并且同一个知识点,可能不同的人站在不同的角度,也会有不同的理解, 看完一些教程视频可能觉得自己懂了,但是当项目中真要用到就感觉稳定性和可靠性等各个方面拿不准,吃不透了。

2023-08-05 15:06:28 1462 3

原创 STM32 10个工程篇:1.IAP远程升级(五)

最后如图5所示是串口解析函数,这个函数主要把串口DMA空闲中断收到的报文数据(报头正确)进行解析,函数先进行了CRC校验判断,如果CRC校验错误直接发送“-error”报文上位机收到立刻显示错误,如果CRC校验正确则进行下一轮判断:对于命令码“00”则为BOOT检测命令,下位机收到后即可返回“+right”并直接置位Flag_Start为Jump_Boot,上位机收到即可显示正确;对于命令码“01”则为APP跳入命令,这里直接置位Flag_Start为Jump_App即可,详细过程放在下一篇博客展开讲解。

2023-07-09 23:47:32 2164 4

原创 三周的面试心得

笔者因为这段时间跳槽换工作,在这三周时间里参加了大大小小的很多面试,所以抱歉博客没有及时更新,下面这篇博客主要是分享一些面试心得吧,既没有很华丽的语句也没有很夸张的修辞,只是简简单单叙述这三周真实的所见所闻所想。 先大概地介绍一下自己的学历和工作背景:本硕都是计算机学院,本科普通一本排名前200名的大学,硕士计算机专业学科评估B+的211大学,学历上属于既不是特别突出,也不是特别拉跨的那种。读研期间和老师做项目接触到了嵌入式技术并产生浓厚的兴趣,毕业以来一直在同一家公司做嵌入式方

2023-06-24 10:36:20 4094 8

原创 Vivado时序约束基础

首先时钟约束必须最早创建,对于7系列FPGA来说,端口进来的时钟和GT的输出RXCLK/TXCLK都必须用create_clock自主创建为主时钟,如果是差分输入的时钟,可以仅仅在差分对的P侧用get_ports获取端口,并使用create_clock创建。这就决定了XDC也具有Tcl命 令的特点,即后面输入的约束在有冲突的情况下会覆盖之前输入的约束。• XDC恰恰相反,ASIC世界的血缘背景决定了在其中,所有的时钟缺省视作全同步,在没有时序例外的情况下,工具会主动分析每一条跨时钟域的路径。

2023-06-04 22:34:05 2805

原创 STM32 10个工程篇:1.IAP远程升级(四)

上位机每发送一条.bin文件二进制报文,下位机STM32确认无误后会发送“2b 52 49 47 48 54 2e 7a”(ASCII码:+RIGHT+CRC16),上位机在界面显示框内需要显示xx/yy包报文发送成功,如果下位机STM32确认有误后会发送“2d 45 52 52 4f 52 Cf 0d”(ASCII码:-ERROR+CRC16),上位机会重新发送该报文,默认同一报文最多发送五次,超过五次上位机在界面显示框内需要显示STM32远程升级失败!其次回答第二个问题,如果上位机直接把。

2023-05-21 23:27:56 3124 1

原创 STM32 10个工程篇:1.IAP远程升级(三)

远程升级(三),但是周三单位突然通知团建周六去爬水长城,晚上回来已经精疲力竭,打开电脑不由地点开网易云音乐听着听着感觉很乏,去床上躺了会可一觉醒来已经夜里三点,于是调整一下周日晚上开始撰写这篇博客,言简意赅不想赘述过多,不论写什么样的技术博客笔者还是追求能用最通俗易懂的话把复杂绕脑的概念和逻辑整理清楚还原给读者。初始化设置,在这里我们只用到了单片机的一个串口,采用了。,需要注意的是这里需要勾选否则生成的代码不支持。引脚,这里我们做好硬件上的引脚匹配即可,当然。所支持的版本,选择最新的。

2023-05-14 23:05:53 2667

原创 FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(五)

2. DDS IP核的输入信号s_axis_config_tdata在其指示信号s_axis_config_tvalid为高时有效,且信号s_axis_config_tdata的低32位是频率控制字,高32位是相位控制字,所以需要在dds_din_freq_vld和dds_din_phase_vld高有效时分别去赋值给s_axis_config_tdata对应的位;图7 输出10ms上升时间、10ms下降时间、10ms保持时间的梯形波。

2023-04-27 23:38:16 3911 8

原创 FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(四)

典型地在eth_control_top顶层模块中需要把UDP协议收到的数据、在usb_control_top顶层模块中需要把USB2.0中收到的数据,通过信号udp_dout和udp_dout_vld、信号rxd_data和rxd_data_vld分别例化出来,再在顶层模块中完成报文解析,有效提取出1字节的指令码和4字节的数据码送到下游指令解析模块中进行解析,指令解析模块把相应的参数通过FIFO写入任意波和正弦波模块中即可实现上位机程控开发板输出不同波形的效果。图2 USB2.0接口顶层模块的代码设计。

2023-04-23 20:45:22 3536

原创 FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(三)

正弦波设置中包括了频率、偏移的设置和指令码0x03、0x04相关联,数据码发送对应的频率控制字或者相位控制字的数值,数值也是由上位机端计算所得,单击上位机的“设置“控件则会把当前页面下的“上升时间”、“保持时间”、“下降时间”的值或者“频率”、“偏移”的值都下发下去,但是在“波形选择“栏中选择波形种类,上位机端只会下发设定波形类型的设置指令,并不会去下发当前频率控制字的设置指令。图1 USB2.0/RS232/ETH控制并行DAC输出任意频率正弦波、梯形波、三角波、方波的整体设计示意图。

2023-04-02 13:15:00 4141 3

原创 STM32 10个工程篇:1.IAP远程升级(二)

其次交代这项技术的原理,嵌入式研发一方面需要不断的项目迭代积累,另一方面也需要懂得些原理性的知识,否则在出故障的时候你如何去复现定位排查问题;中常用的一些中断和配置等,但是另一方面具体在项目中怎么用,这样做好不好或者说对不对,稳定性和可靠性有没有保证等这些没有教程去手把手教学,而且看来看去就感觉网络上的。,跳转至新写入程序的复位向量表,取出新程序的复位中断向量的地址,并跳转执行新程序的复位中断服务程序,随后跳转至新程序的。地址取出复位中断向量的地址,并跳转到复位中断服务程序,如图标号①所示;

2023-03-26 21:41:36 3008 4

原创 FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(二)

在结合XILINX的DDS IP核手册对数字变频参数进行说明后,我们再来看一看IP核的具体设置和各个信号量所代表的含义,以方便后续对其进行仿真测试,搞明白整个IP核的行为特征,细心的同学不难发现在XILINX的VIVADO环境下支持旗下所有7系列的芯片,而相比于ISE环境,大部分XILINX的官方IP核都支持AXI总线协议,AXI总线协议引入了握手机制等,当然在这里篇幅原因笔者就不展开叙述了,感兴趣的同学可以查阅XILINX的官方手册。

2023-03-10 23:33:02 3806

原创 STM32 10个工程篇:1.IAP远程升级(一)

但是市场上开发板demo和网络上泛滥成灾的demo改写版显然不是面试官最后期待的答案,如果实际工作过积累了两年以上经验回答我们用Labview或者C#做了个上位机,按照每包1024字节或者512字节打包发送给下位机,下位机接到以后环形队列写入,加入了CRC校验和上位机重发机制,那么考虑到了串口收发的不确定性重发机制的引入、上位机下位机联调经验这题可得50分;如图1所示是笔者用Labview编写的IAP升级助手,借助这个上位机可以实现任何MCU的IAP升级功能,并且可以实现BOOT和APP之间随意跳转。

2023-03-04 10:34:08 3353 4

原创 FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(一)

如图7所示是数字变频的累加器步长和频率关系示意图,在简单地介绍完累加器步长和地址间映射后,就涉及到第三个知识点即频率分辨率了,那么在数字变频的过程中频率分辨率又是怎么计算出来的呢,对于分辨率相信大家也耳熟能详,比如现实生活中的显示屏有各种各样的分辨率如1920*1080、1024*768、640*480等,显然分辨率越高精确度越大,对于数字变频中其实也存在相似的说法,比如设定的精度理论上可以达到小数点前两位、前一位还是后一位、后两位、后三位等,而这个最小分辨率实际上参考时钟fclk与频率累加器位宽的比值。

2023-02-21 11:28:14 3745 7

原创 FPGA 基础知识专栏后续预告

低档的项目可能SPI接口或者并口ADC等,数据采集以后需要一个系统FPGA做什么,ARM、DSP做什么,FPGA只是单纯做ADC采集还是需要后续FFT、FIR等数字信号处理,ARM和DSP需要做数字信号处理、还是收到FPGA做完的中间结果再带入校准表等进行ADC数据校准等,包括选不同的ADC接口需要的硬件支持是不同的,JESD204B接口需要GTX的支持,LVDS需要把FPGA一个BANK都做成1.8V电平,吞吐位宽也决定了板载DDR3内存颗粒的数量等等;

2023-01-31 16:31:16 2143 3

原创 FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(四)

但是回归到现实在实际工程当中,首先不能保证采集和显示时钟是完全同步的,这只是一种理想的模型;在T2时刻结束,屏幕显示了1/2第一帧图像和1/2第二帧图像;最后就是第五个问题了即在FPGA视频研发当中,乒乓操作和多帧缓存有何异同,相信这是很多朋友们非常关心的问题,这也是笔者在学习实践FPGA过程中被困扰了很久的问题,乒乓操作这个思想真的非常好,也充分发挥了FPGA并行加速的硬件特点,但是大家再仔细想想看它真正从根本上完全解决了图像输入端和输出端之间不匹配或者说不同步的问题了吗。4.什么是局部乒乓和全局乒乓;

2023-01-23 12:39:50 4433 3

原创 FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(三)

在详细介绍过OV7725 CMOS Sensor的相关背景知识和如何初始化其内部寄存器达到输出预期视频流的目的后,就到了该例程的核心内容即把OV7725输出的视频流预先缓存到外部DDR3颗粒,接着按照HDMI的视频格式把DDR3颗粒内存储的一帧一帧图像数据送显到屏幕上显示,如图1所示是OV7725摄像头实时采集送HDMI显示整体设计示意图,在这里大家不妨先去停下来去思考下应该怎么设计这些模块,然后这些模块之间如何进行数据交互和缓存。图3 OV7725 CMOS Sensor在VGA帧模式下的输出时序图。

2023-01-21 11:29:31 3961

原创 FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(二)

根据“OV7725_software_application_note“即OV7725软件应用手册介绍,我们能了解到OV7725实际上一共包含了172个读写寄存器,以用于CMOS Sensor的工作模式的配置,在这里有的寄存器只支持读取或者写入,有的既支持读取又支持写入,在传感器正常工作前,需要用户人为地进行初始化配置才能工作在预取模式下,在这里虽然对这172个寄存器都可以通过SCCB总线进行配置,但是也并非所有的寄存器都需要配置,有些寄存器直接保持默认值即可。

2023-01-18 00:24:21 3226 4

原创 FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(一)

实际上笔者在绘制豌豆开发板原理图时,也参考了市面上大量开发板,但遗憾的是会发现不同开发板几乎都有自己一套自定义的接口,导致了很多不能兼容,也意味着当用了一家的开发板,如果想要做摄像头实验就必须购买对应的接口板和摄像头模块,不同开发板之间的摄像头模组不能通用,模块转接板不能通用,甚至连JTAG下载器接口也不能通用,就带来很多不必要的麻烦,所以笔者在这里采用了CMOS模块的统一接口,使其可以兼容市面上各家开发板的摄像头模块。图5 OV7725 CMOS Sensor模块的内部构造。

2023-01-15 09:03:50 4816 2

原创 2023年的第一篇博客

当然并不是说以后不再更新FPGA了,说实在的,在写这篇博客前一小时,笔者还在看小梅哥的FPGA时序约束视频和特权同学的时序约束书,不喜欢水博客,为了撰写出更多有实战价值和应用意义的博客,下班时候也在不断地充电学习,开卷有益,有时候会发现可能同一个问题,不同人有不同的说法,从不同说法中往往又可以学习到一些没注意到的细节,在“FPGA 20个例程篇”专栏结束后,会继续撰写“FPGA时序约束深度解析”和“FPGA高速接口项目实战”专栏,当然在写之前还需要好好规划下。

2023-01-06 21:17:21 1940 2

原创 STM32程序设计规范浅析

首先需要把需求整明白这点非常重要,切勿啥也不想直接硬上写代码,那你写出的代码一定后期改动很大,举个例子,做过一个项目STM32外挂了adc和dac,以及需要根据adc的回读值给出不同占空比的pwm波给风扇调速,adc输入的是一个正弦波,即对一个正弦波进行adc采样,需要对一个外接IO进行上下边缘判断从而标记整个正弦波的开端,dac需要给定特殊的波形值,单片机内部需要存储校准系数,用来校准adc和dac的采样和输出值,需要两个串口和上游下游STM32通信,这时候就需要理清楚整体思路,把需求归纳好再动手。

2022-12-21 20:44:13 4807 2

原创 STM32 10个工程实战前言

从今年2022年元旦开通博客到现在基本接近一年了,真的会感到感觉时间飞逝,尤其当你全身心地投入一件工作上时,在FPGA基础篇和FPGA 20个经理例程篇后,又准备了STM32基础篇和STM32 10个工程实战篇,前两者即将收尾,而后两者即将开始,最后下定决心要去写STM32博客专栏,说真的也是需要很多勇气的,CSDN大牛太多写不好容易被喷,而且市面上原子、野火、硬石、安富莱的教程和开发板真的琳琅满目,还有各类付费的网络视频等。3. freertos的移植和任务分配,双编码器的控制和eeprom的读写;

2022-12-17 00:16:40 4411 6

原创 FPGA 20个例程篇:18.SD卡存放音频WAV播放(下)

如图5所示是SD卡存放音频WAV播放顶层模块的代码设计,大家需要把各个模块的相关信号例化到一起,在这个例程中首先我们在SD卡中事先存储好了很多首WAV格式的歌曲,然后按下按键KEY1,FPGA会按照SD卡的扇区依次遍历各个扇区直到找到WAV文件头格式的歌曲,把WAV格式的音频数据按照WM8731配置的Right justified、主时钟、默认32bit模式播放歌曲,接着当播放完一首歌曲后,再按下按键KEY1,FPGA会再去查找SD卡扇区的下一首WAV文件头格式的歌曲,找到后继续播放下一首。

2022-12-10 22:07:39 2846 3

原创 FPGA 20个例程篇:18.SD卡存放音频WAV播放(中)

如图1所示是WM8731中11个寄存器功能说明概况图,我们需要对照手册,再去深入了解WM8731中的11个寄存器,怎么去配置这些寄存器达到预期的效果,起初笔者在刚接触这款芯片时,猛地一看这么多个寄存器,那么为了保险起见,就想着把所有的寄存器都按照顺序配置一遍,实际在这里走了一些弯路并且反复排查耽误了两天时间。 注意到复位寄存器R15,其相当于之前PHY芯片对MDIO接口的软复位,当我们写入这个复位命令后实际上证明是WM8731就会将所有的控制寄存器都写入0,本来开发板一上电WM8731会自己复位,

2022-12-04 23:31:52 3226

原创 FPGA 20个例程篇:18.SD卡存放音频WAV播放(上)

如图3所示是WM8731的内部结构和引脚说明这里可以对照图7-1中所示的原理图,其中关键的部分笔者都用了红框进行标记,对于本例程的功能实现,实际上我们关心的只需要去关注3个部分即可,即结构图中的1处的初始化配置控制接口,2处的语音数据到音频信号数模DAC转换接口,3处的音频连接器耳机输出接口,分别对应引脚图中6处的CSB、MODE、SCLK、SDIN,4处的BCLK、DACDAT、DACLRC、ADCDAT、ADCLRC以及5处的LHPOUT和RHPOUT。

2022-11-27 21:38:28 3681

原创 结合原理图关于STM32后期例程的更新说明

笔者在10月份下班,说实话真的是八九点回家拖着疲惫的身体,无数次去说服自己,抽空画了这块STM32F103RCT6的板,这块板子将作为后期“STM32 10个例程”的硬件平台选取了四层PCB板,目前原理图和PCB基本完成,物料从云汉和立创上已经下单预计下周三之前可以到,下下打样焊接了10块,站在四年半的工作经验上绘制了原理图,会选取3-5块免费赠送给CSDN粉丝(回头抽个奖,哈哈),今天周六忙完一天工作想对着电脑,结合硬件原理图来说明STM32后期例程。如读过的书,并非每本都是你喜欢的,但是你必须读;

2022-11-12 22:45:52 4533

原创 FPGA代码设计规范一些探讨

可事实上却不是这样的,当项目复杂度越来越高,代码都需要经过多轮的审核等才能被应用在项目工程里,如果大家写得代码都非常复杂繁琐,那么后期带来重用的工作量是非常巨大的,也非常不容易理解当事人的想法,所以请大家编程的时候,尽量去使用常见的基本语法,也有利于工具的资源优化,对于复杂功能的模块理清楚逻辑,可以先用前面学习到的TimeGen绘制各个信号的波形图,分析明白后再动手编程,从而减少了语句之间的耦合带来程序设计上的二义性。请多去对需求分析,多去画设计图纸,前期增加方案时间,后期减少返工时间。

2022-11-05 18:23:32 3100 7

原创 STM32开发必备知识篇:STM32中断类型

采用向量表处理异常,M0处理器会从存储器的向量表中,自动定位异常的程序入口,从发生异常到异常的处理中间的时间被缩减。如图4所示以STM32F0为例,是STM32F0中断的体系结构,在这里以Cortex-M0内部产生的中断,通常叫做“异常”,而外设产生的中断,通常就叫做“中断”,注意到对于外部产生的中断不管是串口、定时器、IIC还是EXTI GPIO都由一个叫做NVIC即“嵌套向量中断控制器”来管理,NVIC的主要功能可以概括为:1. 中断管理;图6 Cortex-M0处理器的中断和异常向量表。

2022-10-16 22:42:30 5051 2

原创 FPGA 20个例程篇:17.SD卡存放图片逐一送VGA显示(下)

接着我们再来看一看video_driver即VGA图像显示模块,在这个模块中我们需要和上游DDR3读写控制模块进行数据交互,并根据VGA到显示逻辑,在扫描到有效区域的时候,通过video_rdy信号,触发上游模块的读FIFO使能信号,再依次从上游模块中读取128位的数据,因为在这里一个RGB565像素点恰好是16位,所以把128位数据拆分成8个16位数据传给VGA显示,如表1所示是video_driver模块信号列表。图3 SD卡存放图片逐一送VGA显示顶层文件的例化。SD卡图片VGA显示。

2022-10-05 18:03:55 2442 2

原创 FPGA 20个例程篇:17.SD卡存放图片逐一送VGA显示(上)

在学习实践过SD卡读写和VGA驱动显示的时序后,在下面4个例程中笔者精心选择了综合性较强的,相信大家静下心把这4个例程都独立地去实现后,FPGA的设计能力又会提高了一大步。 这几个例程更贴近于实战项目可以帮大家丰富简历内容,这里不妨去设想一个很真实的场景,如果您是面试官在看到很多简历尤其是校招中写的都是异步FIFO、UART、VGA等各种培训班或者网课的基本项目,但突然看到一份简历里写的项目内容:SD卡存储图片和音频并显示和播放、OV7725实时采集图像乒乓读写DDR3送HDMI图像边缘检测显

2022-10-05 09:28:02 4371 3

原创 FPGA 20个例程篇:16.HDMI显示彩色风景图

大家可以对照图9,思考下如何实现并转串的过程即把8B/10B编码后的10位数据通过HDMI接口上的差分对把数据传输出去,这里假设video_driver驱动模块的模块时钟是pixel_clk,显然为了实现10位到1位的并转串处理,如果是sdr单边缘触发传输,那么 需要一个相对于pixel_clk时钟快十倍的pixel_clk_sdr时钟作为数据传输的参考时钟,如果是ddr双边缘触发传输,那么则需要一个相对于pixel_clk时钟快五倍的pixel_clk_ddr时钟作为数据传输的参考时钟即可。

2022-09-26 16:25:17 4866 2

原创 FPGA 20个例程篇:15.VGA显示八种颜色的彩条

在中学的物理课中我们可能做过棱镜的试验,白光通过棱镜后被分解成多种颜色逐渐过渡的色谱,色依次为红、橙、黄、绿、青、蓝、紫,这就是可见光谱。但需要注意的是,虽然大家看到的屏幕大小是640*480的,但是它的实际大小并不只有那么大,或者更通俗点地说,VGA扫描的范围是包含了肉眼能看到的640*480这块区域的更大区域,它会在周围一圈你看不到的区域部分进行扫描,所以在程序设计上,我们在处理扫描信号的时候要注意只有扫描到有效区域的时候才能把像素点数据传给VGA显示,如图6所示形象地描述VGA成像的显示原理。

2022-09-19 16:45:51 3678 2

原创 FPGA 20个例程篇:14.千兆网口实现ICMP、UDP通信协议(下)

在这里想着重说明一点,即不论是ICMP还是UDP发送模块,都要在发送帧之前计算好对应的IP首部校验、ICMP首部校验或者UDP首部校验,对于IP首部校验仅仅只是代入IP首部20个字节进行校验,而对于ICMP首部校验或者UDP首部校验需要校验首部和数据等,所以这也就是在整个例程中用RAM而不用FIFO作为数据收发缓存的原因,因为实际上在ICMP和UDP帧数据打报发送时,需要用到两次缓存中接收到的数据,一次是用来计算首部校验和,另一次是用来发送数据报,如图2所示是UDP发送模块的代码设计。

2022-09-18 20:50:29 5487 33

原创 FPGA 20个例程篇:14.千兆网口实现ICMP、UDP通信协议(上)

在依次设计完以太网首部解析模块、ARP数据解析模块、IP首部解析模块、UDP数据解析模块后,只剩下ICMP数据解析模块了,在这个模块中我们主要实现PC端发起的ping功能,也是ICMP帧中最常用和最关键的功能,ICMP是TCP/IP协议族的一个IP层子协议,包含在IP数据报里,用于IP主机、路由器之间传递控制消息,如图13所示是ICMP数据报格式,其中回送请求报文类型为8'h08,回答报文类型为8'h00。所以利用IP首部长度和IP数据报总长度,就可以知道IP数据报中数据内容的起始位置和长度。

2022-09-08 17:32:55 8764 15

原创 Gvim计数器模板经典练习

这个练习结合上面的各个练习的思想,也算是比较复杂的一个了,大家可以试着写一写,找到一些写FPGA时序逻辑的感觉,当然这本身也是一个很好的模型,这里面涉及到了计数器嵌套,flag_add和flag_sel,en信号的接收,dout_vld和dout信号的处理等等,如果这个练习也能顺利地写出对应的Verilog程序,那么对于Gvim编辑器下计数器的模板就可以说已经大概掌握了,相比而言只是缺少后期的实战磨练,其中图7-23为练习6中各个信号的波形图,图7-24为练习6的代码设计。......

2022-08-30 17:45:55 2488

原创 FPGA 20个例程篇:13.千兆网口实现ARP通信协议(下)

先来看以太网首部解析模块,如图1所示是ARP帧的报文格式,其中包括了14字节的以太网首部和28字节的ARP请求应答数据,在这个模块中我们来实现以太网首部的解析,注意到以太网的帧前端含8个字节前导码,即64'h55_55_55_55_55_55_55_55_d5,所以在这个模块中也需要去判断前导码是否正确,如表1所示是mac_receive_analy模块信号列表。整个模块代码设计中没有过多复杂的功能,按照流程来判断即可,用一个状态机来实现。

2022-08-23 08:29:20 4033 10

原创 FPGA 20个例程篇:13.千兆网口实现ARP通信协议(上)

如表1所示是rgmii_to_gmii模块信号列表,要在这个模块中去实现RGMII接口和GMII接口之间的相互转换,因为模块中有4组信号要进行DDR到SDR之间的转换,即gmii_txd和rgmii_txd,rgmii_rxd和gmii_rxd,gmii_tx_en和rgmii_tx_en,rgmii_rx_dv和gmii_rx_dv,所以调用了4个SelectIO IP核,如图19所示是RGMII接口和GMII接口转换的代码设计。ARP映射是指将IP地址和MAC地址映射起来,分为静态映射和动态映射。

2022-08-22 18:43:54 5416 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除