FPGA学习
文章平均质量分 61
本专栏将详细介绍自己学习FPGA的历程经过,包含学习小梅哥 Xilinx FPGA 基础入门到项目应用培训教程全套个人记得笔记等
Pluviophile_miao~
这个作者很懒,什么都没留下…
展开
-
Verilog 学习第九节(DDS原理)
注:由于vivado软件在模拟正弦波的时候会自动补齐一些本来没有的点,所以在计算一些点的时候或者周期的时候可以把波形图像返回原来的10进制数据模式以更准确地显示~一个完整的周期,被分成了2^32 个点,输出32个点,每1ms输出一个点,得到一个完整周期的波形。根据图像计算得:频率为1000000000/1315200=760。根据上面的公式计算得:50MHz*10^16 /2^32=762。原创 2023-03-14 16:20:39 · 247 阅读 · 0 评论 -
Verilog 学习第八节(数码管段码显示)
共阴极数码管:低电平端接的都是0,高电平端哪里设置为1 ,哪里就亮~共阳极数码管与之相反~对于三位的共阴极数码管第0.01s:让数码管0的a段亮,其他数码管全灭Sel0为高电平,sel1和sel2为低电平A段为低电平第0.02s:让数码管1的b、c段亮,其他数码管全灭Sel1为高电平,sel0和sel2为低电平B和C段为低电平第0.03s:让数码管2的e段亮,其他数码管全灭Sel2为高电平,sel0和sel1为低电平E段为低电平所以,通过这种方式,可以节约引脚~原创 2023-03-07 10:54:21 · 1314 阅读 · 0 评论 -
Verilog 学习第七节(亚稳态状态原理与解决方案)
在亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态引时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。对按键消抖模块修改~添加一层同步信号。原创 2023-03-03 19:31:16 · 665 阅读 · 0 评论 -
Verilog 学习第六节(基于状态机的按键消抖原理与状态转移图)
通常情况下解决按键消抖可以采用当将上图中的第一个实际图转换成第二个方便处理分析的图,在第一次检测到电平波动从上生沿变化下降沿的时候开始计时20ms,下后面的都判断为按下状态;4:释放消抖状态:20ms的计时状态,在这个状态里,一边计时,一边检测有没有出现下降沿,如果有下降沿,回到等待释放状态;2:按下消抖状态:20ms的计时状态,在这个状态里一边计时,一边检测有没有上升沿出现,如果有上升沿,回到空闲态;3:等待释放:等待按键释放(等待上升沿),一旦出现上升沿,就开始20ms的计时。原创 2023-02-27 21:58:52 · 516 阅读 · 1 评论 -
Verilog 学习第五节(串口接收部分)
波特率是指串口通信中,单位时间传输的二进制位数eg:115200对应的就是1s传输115200位,即传输一位需要1000000000/115200,若进行采样频率为波特率的16倍则需要再除以16对应于每次的采样的时间,由于内部时钟20ns的频率进行变化,所以想要计算对应的采样次数就需要再除以20~在实际板级运行的时候,当我们的time值更新时(25000000),counter的值已经大于该值,所以无法通过计数比较的方式清零,只能一直自加下去,直到32位计满了,溢出清零,然后才能正常的循环计数清零。原创 2023-02-27 15:21:06 · 1627 阅读 · 0 评论 -
Verilog 学习第五节(串口发送部分)
2:在主代码中为了模拟实际电路中的赋值情况,可以设置#10代表延时时间,上面记得加`timescale 1ns/1ns,因为在下载到电路板上以及vivado识别的时候会自动略去这里的延时,但是这么写对实际电路仿真的时候却又非常有用。题目:使用上面的串口发送模块,设计一个数据发送器,每10ms以115200的波特率发送一个数据,每次发送的数据比前一个数据大一(计数器)3:串口通信的本质就是将8位并行数据通过一根信号线,在不同的时刻传输并行数据的不同位,通过多个时刻,最终将8位并行数据全部传出。原创 2023-02-21 22:00:43 · 3021 阅读 · 6 评论 -
Verilog 学习第四节(从计数器到可控制线性序列机——LED实验进化六部曲)
1:锻炼了自己分析波形的能力,自己调试,最初小梅哥的代码在间隔10ms的时间里会一直保持ctrl[0]的状态,让波形看的很乱,找不到是什么时候开始算起的,于是我对counter2进行计数更改,当当前处于不计数的状态时,不为0.因为为0 的话需要在后面case循环中进行判断等于ctrl[0],于是我把不计数的状态设为不在判断范围内的8,使其为0,这样使得波形比较规律易懂。答:在四的基础上增加led的位宽,以及设置多个控制信号进行赋值。1:这里为了使亮灭计数好想,设置了复位状态时led灯为灭~原创 2023-02-18 18:32:15 · 936 阅读 · 0 评论 -
Verilog 学习第三节(参数化方法,led 不同频率闪烁)
收获:使用modelsim仿真的时候如果需要仿真的时间比较长,刚开始可能会没反应出现不了自己想看到的结果,所以设置适当的时间也很关键。原创 2023-02-17 20:47:05 · 285 阅读 · 0 评论 -
Verilog 学习第二节(语法学习与应用,led跑马灯)
3:写法二中新填了一个计数器count计数为8,关于else if位置对7的判断地方,自己的逻辑思考中是要有的,但是其实可以直接一直加1,因为3位的计数器再加1的时候会产生溢出,保留位置的值仍是000,可以简便写法不去判断。4:有的时候出现灯的情况和自己理想状况不一样的时候可以看看是不是在写0000_0001的时候忘记在前面加上8’b了如果不加其默认可是为系统宽度十进制的数的,要注意!5:参数化的写法不只是用于仿真中,也可以在其他模块例化的时候进行重新赋值等等的使用。原创 2023-02-17 16:56:27 · 927 阅读 · 0 评论 -
Verilog 学习第二节(设计一个以1s频率闪烁的LED灯)
注:虽然以下的代码仿真验证都有效,但是我个人觉得还是不是最完美的代码,自己还需要学习,因为if后面没有else,以及if else后面没有else感觉会生成多余的电路元件,自己进行了测试见文末好像也没有很大区别(再议)eg:如果要计数4次,则需要的是0-1,1-2,2-3,3-0,0-1这样的循环;的时候就可以了,不要记到整,因为它还需要进行个归零状态也需要一次时钟计数。同时不要忘记设置复位按钮,有了以上的思考就可以开始编写代码了~能够保存一定时间的数据,所以在设置的时候要设置成。原创 2023-02-15 14:48:30 · 2317 阅读 · 0 评论 -
Verilog学习第一节(基于vivado基本编译流程以及3-8译码器简单实现)
3:综合工具(由专业的EDA软件进行,Quartus,Vivado,ISE),对所写的逻辑描述内容进行分析,并得到逻辑门级别的电路内容。2:行为级仿真和时序级仿真是有区别的,时序级别仿真可以看出输入改变的时候输出并不会立即改变因为有延时,感觉可以进行延迟测试观察~4:功能仿真(使用专门的仿真工具进行仿真,验证设计的逻辑功能能够实现)仿真是理想情况,可靠度不是那么高,不要依赖仿真XXX。7:板级调试:让设计的逻辑在目标板上正常工作,(功能正常,性能稳定)6:分析性能:1)时序仿真(非常耗费时间)。原创 2023-02-14 22:13:26 · 1415 阅读 · 0 评论