FPGA
Morsartist
左脚写诗,右脚写代码
展开
-
rom读图片
本文算是个草稿,以后再优化使用rom读数据时,列如读图片时,需要遍历rom中的所有的值四个比较重要的信号,即rom的读使能信号rden,rom的读地址addr,rom的读数据有效信号,和rom的读出的数据。module lcd_display( input lcd_clk , input rst_n , input [10:0] pixel_xpos , //像素点横坐标 input [10:0] pixel_ypos , //像素点纵坐标 outp原创 2021-04-22 12:40:41 · 362 阅读 · 0 评论 -
Altera的rom/ram仿真
rom和ram的仿真与其他IP核存在区别,原因是要添加一个.mif或者是.hex的初始化文件(ram可以不添加),如果仿真中不添加这个文件会被被读出空数据,所以学会rom、ram的仿真很重要,下面为仿真的步骤1.首先编写一个mif文件, mif文件模板.由于modelsim无法识别这个mif文件只能识别.hex文件,所以需要使用quartus软件对mif文件进行转换,步骤如下:打开quartus—>file—>open—>(选择你写的.mif文件)—>再点击file—>选择s原创 2021-04-13 11:36:55 · 630 阅读 · 0 评论 -
mif文件的模板(用于初始化rom)
WIDTH = 8 ; //存储器的位宽DEPTH = 16 ; //存储器的深度ADDRESS_RADIX = UNS ; //地址的格式:无符号数(Unsigned)DATA_RADIX = HEX ; //数据的格式:十六进制数CONTENT BEGIN//存储单元的地址 //写入各地址的数据 0 : 12 ; 1 : 34 ; 2 : 56 ; 3 : 78 ; 4 : AB ; 5 : CD ; 6 : EF ;原创 2021-04-12 21:03:13 · 304 阅读 · 0 评论 -
数码管动态显示模块
为什么要学习数码管动态显示多个数码管的段选是连在一起的(如果不连在一起就会占用大量的I/O资源),所以需要快速刷新来保证所有的数码管都亮,并且也可以用数码管来显示结果.数码管为共阳极,即给端口低电平才能点亮数码管显示代码module seg_dynamic( input sys_clk , input sys_rst_n , input [19:0] data , //输入的数据 input [5:0] point , //小数点位,高电平使能原创 2021-04-09 17:22:00 · 1082 阅读 · 0 评论 -
沿检测
为什么要学习上升沿、下降沿沿检测用处非常的广泛,在很多代码中都会被用到.上升沿、下降沿的核心代码如上图所示,由于会提前一个时钟周期,所以要对生成的沿再延时一个时钟周期//touch_en:按键按下就生成一个时钟的高电平assign touch_en = (touch_key_d0 && (~touch_key_d1));//对两个信号进行延时,用于上升沿检测always @ (posedge sys_clk or negedge sys_rst_n) begin if原创 2021-04-09 16:46:40 · 132 阅读 · 0 评论 -
按键消抖
为什么要学习按键消抖我们经常在生活中接触到机械按键,而当我们按下和松开的时候,机械触点会在闭合和断开会产生一连串的抖动,即可能只按了一下而实际上被检测为按下多次,为了防止产生这种现象我们就需要使用到按键消抖。按键消抖多用于记录按键按下的次数这种情况。硬件消抖即通过RS触发器对按键进行消抖,成本较大,所以不常使用软件消抖####第一种方法第一次按键为低电平了就开始计数,然后延时一段大于30ms 的时间后再检测得到的按键电平就是稳定的按键信号...原创 2021-04-09 15:33:46 · 221 阅读 · 0 评论 -
分频器
为什么要学习时钟分频FPGA设计中,由于开发板上提供的晶振的频率是固定的,所以我们经常会对时钟进行分频和倍频,而时钟分频有两种方法,即使用IP核PLL和自己用verilog来描述,本文章重点讲解第二种方法。奇数分频和偶数分频第一种方法(不推荐) 上图为时钟的六分频波形图偶数的分频较为简单,只需定义一个计数器,当计数到分频数的一半时,将输出信号取反即可 上图为时钟的五分频波形图奇数的分频与偶数相比较为复杂,其中clk_1是根据时钟的上升沿对cnt进行判断是否翻转;而c原创 2021-04-09 10:20:58 · 1723 阅读 · 0 评论