Verilog学习笔记——分频器
分频器应该是verilog里最常用的一个模块了,原理也很简单,就是设置一个计数器,设置在计到指定的分频数的一半后反转输出波的电平,以实现指定数目的分频,以下是一个100,000分频的例子:(这个模块本来是用于将一个100mHz的晶振信号转化为周期为1ms的信号) module ms_clk( input clk_100mhz, //输入时钟信号100mHz output reg clk_ms ); [...]
分频器应该是verilog里最常用的一个模块了,原理也很简单,就是设置一个计数器,设置在计到指定的分频数的一半后反转输出波的电平,以实现指定数目的分频,以下是一个100,000分频的例子:(这个模块本来是用于将一个100mHz的晶振信号转化为周期为1ms的信号) module ms_clk( input clk_100mhz, //输入时钟信号100mHz output reg clk_ms ); [...]
突然发现好像很久没有写过博客了…… 正好最近在上微机课,稍微学了一点汇编,实验课做了个小程序,就正好来水一篇文章( 代码和逻辑还是比较简单的,也加了很多注释,应该可以看懂我就不细讲了( .486 DATA SEGMENT USE16 password DB 'B18020511$' [...]
咕咕咕了很久,终于想到要来写第二篇学习笔记了……这次的实验目的是使用DAC0832来产生自定义波形。 概述 首先是这次要用到的两个器件:DAC0832和TL084,通过由这两个器件组成的电路我们就可以达到将数字信号转换为模拟信号的目的,来看一下电路图: 图上标注为DAC0830,这两款芯片使用方式相同 对于电路图的连接不再做过多赘述。我使用了DAC0830的直通模式来进行实验因为这样最方便。在正确连接的情况下,FPGA所需要做的就只是按照预期的波形输出对应的电压值。不过要注意的是,DAC0832的反应时间约为1 μs,所以如果你给的数值变化速度高于了这个值,那可能无法看到波形正确显示。不过以这个模块的精度,我想也完全用不上这么精确的波形输入…… 接下来就进入最关键的部分:通过FPGA输出波形数值给DAC0830。因为我希望能够输出一个可调的波形,所以我将使用ROM来存储希望显示的波形,存储方式就是在一个波形上等间距地取一定数量的点,然后将这些点按顺序保存到ROM中,这样就只需通过固定频率的时钟按顺序读出这些点,就可以输出我们想要的波形了。当然,这种做法所输出的波形一定是会有失真的,所取的点越密集所产生的失真也越小。同样波形的精确度还受器件以及电路等多种因素的影响,所以想做一个高精度的波形发生器也是件很麻烦的事情…… 正片 1.配置ROM 那么接下来就开始正式编写模块了,首先要做的就是将ROM加入工程中。ROM可以直接调用Vivado中的IP,做法很简单,在左侧工具栏选择IP [...]
2019年的电赛终于结束了,今年的电赛题目真的是神仙出题,对于我这种传统自控选手充满了恶意。但无奈与自己技术有限,最后我们队还是选择了电磁炮这道题。然后,我们从七夕节开始爆肝了四天三夜……打了四天三夜的炮 由于题目比较长,在这里我不在正文部分把题目放出来了,真的不是我懒得排版有需要的可以直接下载PDF查看题目。不过想必有兴趣看这篇文章的都应该知道题目吧…… 说实话,在看到这个题目的时候,我的内心是崩溃的……尼玛电磁炮是什么啊???这玩意真的是随随便便就能搭出来的吗???整个人瞬间就懵了,或者说整个实验室瞬间就懵了,吐槽声络绎不绝……好在队友给力,不一会就从网上翻出来了电磁炮的电路图(图我忘记存了,不过网上这种图一堆一堆的……)然后火速坐地铁去了器件店里买齐了所有的材料,大概是在我把图像识别写完之后,我们组的电磁炮居然就已经可以运行了,而且好像一下就能发射了???这么说是不是显得我特别菜的样子……不得不说,大佬牛逼!虽然我们搭的电路还很粗糙,但是花了几个小时就已经把我觉得最为棘手的电磁炮部分搞得差不多了,感觉我们这次从起跑线上就很顺利了。 闲话就说到这里,接下来我会通过列出一个个问题的方式并解决的方式来记录我的这次电赛经历。语文学渣,叫我写记叙文的话还是免了吧…… Prob.1 目标追踪 看到这个题目,我首先想到的就是目标的追踪问题,因为电赛前一阵子我刚好在学图像处理方面的知识。这次题目一出来,我瞬间就爽了,我手边刚好有一个不错的颜色识别的程序,只需略加改动,我们的目标追踪系统就完成了,而且连串口的配置我都在之前就弄好了。因为这次的图像识别还是比较简单的,所以我这边只贴出我使用的代码,如果想学习的话还是建议去看看opencv的教程。 图像识别代码基于树莓派上运行的opencv,使用树莓派摄像头模块:(具体的代码实现就不讲解啦……看了注释应该就懂了) #encoding:utf-8 import [...]
好久不见,我又回来开新坑了。老挖坑人了。 这学期开始接触数电了,感觉比模电好玩多了模电是什么废物玩意,而且因为数电极强的逻辑性以及又fpga这种可编程器件的存在,所以我觉得数电比模电更容易上手,而事实也是现在数电的发展远比模电强大。 闲话不多说,接下来我来介绍一下我设计的电子钟模块,它通过输入一个1Hz的时钟信号来达到计秒的功能,并且具有校准时、分、秒以及清零的功能。具体的实现方法是在内部设置了两套存储器,一套用于存储时钟信号计算的秒数,另一套用于存储用户自定义的校准时间,然后将两套存储相加即可输出最后的时分秒信号。 原理非常简单,算是我学习Verillog以来做的第一个模块了吧,接下来贴出代码:(添加了代码注释) module clock( input clk,h_ad,m_ad,s_ad,res, //输入clk为1Hz output [...]
感觉自己好像很久没有更过博客了呢……今天来记一点东西。 在期末考试复习之余,闲得无聊去研究了一下网站链接的美化问题,本来以为搞起来会很麻烦的,结果试了一下之后发现还挺简单的。 这个方法可以随心所欲的更改网站中显示的url,把所有的index.php等全部隐藏起来,让网页的url看起来更舒服。 配置方法很简单,参见以下代码: #Nigix:在服务器配置的server{...}内添加: location / { if (!-e [...]
其实严格来说这并不算是软件……(但是懒得弄新分类了) 这个插件的开发目的,就如插件名称所说,是要开发出一款插件来自动生成我的追番列表页面。(感觉自己又开了一片大坑) Sinon的追番列表 GitHub 更新日志 V1.2.1 添加了编辑番剧信息的功能获取番剧信息时,若中文名为空,自动将原名移至中文名一栏 v1.2 添加了在插件内直接搜索番剧的功能添加了后台按状态筛选番剧的过滤器 v1.1.4 [...]
由于我参加了自控方向的电赛,而我们省的电赛又是由Ti公司赞助的,所以在比赛是使用Ti公司的单片机会有得分加成,这就使得我需要重新再学习一种新的单片机,虽然刚开始的时候内心是拒绝的,但是后来当接触到了Ti之后,发现这个公司的IDE以及库函数比我原来开发stm32的那一套工具好用多了,于是也渐渐开始能接受学习tm4这块板子了。 这是TI公司的 CCS8 IDE,感受一下这风格 在寒假期间,我把tm4的基础使用学习的差不多了,同时也自己构建了一些以我自己的代码风格为标准的tm4驱动库,这篇博文的主要目的也就是分享一下我自己写的这些库函数。排序比较随意,将就着看看吧…… 代码使用的开发板型号:TM4C123GTX单片机型号:TM4C123GH6PM 特别提示:由于不同种类的开发板及芯片型号的区别,请在移植时确保读懂代码,并确认代码与自己的库函数的兼容性,并根据需要修改端口配置等。如果不兼容的话,可能需要使用自己版本的库函数替换代码中的库函数,这一块请自行配置吧,应该不会太难的~此外,有部分中断初测采用的是在中断向量表中注册的方式,所以并没有动态注册的代码,还请留意。 1.ADS模块 ADS模块,即数模转换模块,这个模块可以把电压信号转换为PWM波来供单片机读取,这个模块通常会与其他传感器连接,用于获取传感器的数值。我提供的这个ADS驱动库包含了单通道电压的读取。 //ads.h [...]
感觉最近好像喜欢上开坑了……这次的目标是要做一个基于SQL的图形化学生管理系统,预期实现的目标至少包括学生的增删改查操作,以及成绩系统录入、排名等操作,还包括课程的管理,学分和绩点的计算等,主要目的是学习一下SQL与其他编程语言的联合编程,软件项目开发的过程,以及git、GitHub的基本操作。主要还是以学习为主,而且不知道啥时候能把这个坑填完,先把项目和flag立好再说吧~ 接下来是项目的GitHub开源地址,采用AGPL协议(好像我最近很喜欢用AGPL协议呢……): 学生成绩管理系统-GitHub
就在今天,电赛测评结束的时候,我两周以来对电赛的各种准备也尘埃落定(不过感觉自己比较划水)。虽然最后结果并没有那么符合我的预期,不过在做这个算是我人生中的第一个电赛项目的时候,我还是学到了很多东西,也同时把高中做机器人时遇到的一些想法等重新回顾了一下。 首先先晒一下我们的成品,比较丑,不要太在意细节啦…… 小车俯视图小车平视图以及旁边的openmv追车系统自制的蓝牙小车遥控器 总体概述 因为我的动手能力比较差,所以小车的搭建主要还是依靠我的队友,包括各种模块的选择也都主要是由我的队友来负责,我对他们选择模块只有一个要求,让我的代码能尽量好写一点……(虽然最后还是有不少问题是依靠代码解决的……) 回顾这次比赛,我划水的时间还是比较多的,所以这次比赛的大部分工作还是由我的队友完成的,在这里还是非常感谢我的队友所付出的种种努力。(比心) 回顾一下这次比赛的经历,总的来说就是一个从发现问题到解决问题的过程,我们从组装到调试遇到了很多问题,这些问题既有硬件问题,也有代码逻辑的问题,还有一些设计的问题,其中一些解决了,一些找了一些替代方案,一些看似解决了但在最后测试时仍然出了问题。 在开始之前,我们先来看看这次比赛的题目吧: 比赛题目 激光追车系统(自控类) [...]