- 博客(10)
- 收藏
- 关注
原创 简易的串口收发ram
我们使用之前编写的异步信号串口以及双端口ram(ip核)搭建一个简单的存储器顶层模块如图所示,我们首先需要将数据写入ram对应的地址中,然后通过按键控制模块,逐位的将ram中存储的数据进行输出。这里还添加了按键消抖模块来模拟真实环境,以及最后上板的话可以消除亚稳态问题。在顶层中将各个模块例化,并且添加dram双端口,最后生成的电路图如1所示。最后仿真中可以看到,按键产生的随机抖动并未影响到数据的寄存。...
2022-01-05 23:44:27
393
原创 UART串口发送与接收模块
UART通信是最基础的,我们按照RS232的标准来编写相应模块,其中有起始位,结束位以及8位数据位。因为RS232是异步收发器,我们还需要对信号进行同步处理,否则会出现亚稳态的问题,影响仿真。首先产生分频时钟以及波特率计数器,只有当波特率时钟为1时,才会发送相应的数据位然后编写状态机逐步输出每一位数据,最后使用issp以及串口助手来验证发送功能,将程序写入fpga中后,在issp中编写相对应的数据都会在串口助手中显示出来。然后编写接收模块,接收模块我们每一个数据位将其划分为1
2022-01-05 23:37:43
798
原创 利用74HC595芯片实现数码管(8位8段)
首先利用状态机编写数码管的位选与段选,根据想要显示的数字控制不同数码管的亮灭,这里因为是共阴极数码管,所以我们在一定时间内控制电压的导通,人眼的视觉效应看就是常亮的,但其实是动态扫描这里用到查找表,这里数码管编写好并不能直接上板验证,因为板子上是集成的I/O口,所以我们需要将输入的串行信号转换成并行信号,利用时钟分屏并且计数,最后全编译没有问题利用issp输入自己想要的数字,最终显示在数码管上。...
2021-12-26 23:58:07
2147
原创 quartus报错
Error (12152): Can't elaborate user hierarchy "xxx"一开始以为这种错误是因为模块编写有问题,在网上进行相关查阅后,发现是同一个模块中用了两种时钟导致错误例如对数据进行寄存时reg [15:0]r_data;always@(posedge clk or negedge rst_n)if(sen)r_data<=data;elser_data<=r_data;在always块中定义了negedhe rst_n 同时也有 pos
2021-12-26 23:39:07
3499
原创 使用状态机消进行按键消抖
在机械按键内部都会有弹簧,当我们按下时会发生抖动,这可能导致我们系统对电信号的判断有误。所以可以用状态机进行消抖,我的理解就是在只要按键保持的时间没有达到一定的数值,在这个中间的抖动对归为一种状态。设计START,F1,DOWN,F2这四种状态,只有当计数器记满20ms才会发生相应跳变。先设计计数模块对输入的单bit信号进行同步处理最后用case语句写出4种状态的转变写出激励文件,观察波形,输入波动的值随意跳动,不能超过20ms,不然认为是稳定的。在抖动...
2021-11-19 22:37:32
1174
原创 用状态机判断输入的字符
当我们需要判断输入的字符串是否为自己想要的时候,可以用verilog语言写一个状态机来实现目标,并且当字符串的数量较少时,采用独热码的编码形式,虽然会调用更多地寄存器,但是逻辑上更加简单便捷。例如判断xjtu编写的一部分rtl代码,当输入为对应字符时,状态跳转到下一字符并继续判断。这里注意,因为data是ASCII码的形式,所以需要加双引号。下来随便编写一些字符模拟输入看到当连续输入xjtu字符时,led状态翻转,检测成功。...
2021-11-16 22:44:10
765
原创 级联BCD计数器
BCD的作用之一就是使数码管显示,可以把十进制的数码管拆分,每一个进位代表4位宽的二进制代码,当计数达到一定量后进行跳转。首先写出每一个单独的bcd计数器的代码,我这里定义的cout为reg型数据,然后写出三个级联的,这里注意输出是12位宽的,查看电路图发现即为设计想要的然后编写tb文件进行仿真在HDLbits也有类似的题目,需要自己设计加法器,并且进行16次例化自己编写代码并且成功...
2021-11-13 18:22:54
623
原创 计数器控制led灯的亮灭
想让led灯不断闪烁,可以利用计数器操控,在计数器寄存器达到一定的数值后,改变led灯的电平,实现亮灭。在模块设计中先定义计数器的寄存器,其后再通过寄存器改变led的电平,当我们复位信号为0时,整个电路都处于初始状态,并不会有变化。下来编写激励文件,观察波形。最后分配管脚,上板子观察这里自己一开始将寄存器的目标值设定太小了,导致连板子的时候led灯一直处于亮的状态,还以为是管脚分配错误,最后将目标值改大,观察到了闪烁的现象。...
2021-11-05 17:30:49
2253
原创 3_8译码器
一个简单的3——8译码器,直接根据真值表写出程序,没有加入使能端。根据真值表使用case语句,方便快捷然后写激励输入信号是自己随便给的,最后直接生成波形图观察结果观察到波形与真值表一致...
2021-11-02 10:21:23
176
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人