|
|
|
|
|
|
07 2012 档案
FPGA/CPLD设计学习笔记(转载)
摘要:FPGA\CPLD设计学习笔记1、硬件设计基本原则(1)、速度与面积平衡和互换原则:一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整个设计消耗的芯片面积,这就是用速度优势换面积的节约;反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那么可以通过数据流串并转换,并行复制多个操作模块,对整个设计采用“乒乓操作”和“串并转换”的思想进行处理,在芯片输出模块处再对数据进行“并串转换”。从而实现了用面积复制换取速度的提高。(2)、硬件原则:理解HDL本质(3)、系统原则:整体把握(4)、同步设计原则:设计时序稳定的基本原则2、Verilog作为一种HDL语言,对
阅读全文
PS2键盘
摘要:PS2键盘是一种很普通的键盘,有6个接口,其实我们只需关心两个引脚,数据信号DATA,和时钟CLK信号,和串口通信差不多,DATA有12位,其中8位是有效数据位,每当CLK的下降沿到来时,开始采集数据! 键盘编码返回值,如有键盘被按下,就会发送通码,当按键被释放,就会发送断码,每个按键都分配了唯一的通码和断码,这样主机通过查唯一的扫描码就可以知道是哪个按键。按键的通码和断码组成了一套扫描码集,现在用的比较多的是第二套扫描码,多数第二套断码有2字节长,第一个字节是8'hf0;第二个字节是这个按键的通码。例如按下T键,然后再释放T键,此时发送到计算机的数据应该是:8'h2c(通码)
阅读全文
VGA接口(四)字符
摘要:今天再接再励,字符在电脑上也显示出来了,这个字符和昨天的图片有点不一样,昨天显示的是一幅图片,可以行取模,然后将行地址赋给rom_addr,若要显示多幅图片,这个方法,还有待改进!今天要在电脑液晶屏上显示多个字符,可以列取模,然后,将列地址赋给rom_addr,然后,根据rom_data逐行判断点阵是否该点亮。还是,那句话其实大家只要把VGA的时序,、怎样取字模存入FPGA的ROM中,以及采取怎样的扫描方式在电脑上显示,这几个问题弄明白了,我想VGA接口也不是那么难!//程序实现的功能:在电脑液晶屏上显示“大家来一起学习 FPGA”几个字符;64*640点阵module vga_zifu ..
阅读全文
VGA接口(三)图片
摘要:折腾了几天,一直在研究如何在电脑上显示图片,总算在今天下午弄出来了,其实主要的问题是因为第一次学习怎样将图片的字库,存在FPGA的ROM中,以及怎样将它取出来显示在电脑,其他的和上两个实验的内容差不多,只要把上面几个问题想清楚了,这图片显示的不是很难的事!//程序实现的功能:在电脑屏幕上显示一张64*64点阵的皮卡丘图片;module vga_tp ( clk, rst_n, hsync, vsync, vga_r, vga_g, vga_b ); ...
阅读全文
VGA接口(二)
摘要:今天本来打算写一个256色彩程序在电脑液晶显示屏上显示的,可结果我发现我的FPGA开发板上VGA接口的RGB只有三位,没办法,只能显示八种色彩,那就将就一下,显示八种颜色吧!其实,和VGA接口(一)中的程序差不多哦,只是,多了几个坐标区间而已,大家学习VGA接口,只要把它的坐标区间弄清楚,我想驱动简单的VGA接口程序,应该没什么问题的,因为,我也是一名FPGA初学者,对VGA了解的不是很深,所以,在这里献丑了!接下来看代码吧。//程序功能:在屏幕上显示八条不同颜色的矩形条;module vga ( clk, rst_n, hsync, vsyn...
阅读全文
VGA接口(一)
摘要:VGA接口共有15针,分成3排,每排5个孔,是显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。 此前没有接触过VGA,因为单片机频率太低,不足以驱动VGA,而FPGA足以驱动VGA,今天小试牛刀,编写了一个矩形框,在液晶显示屏上显示!//程序功能:背景红色, 小矩形为绿色, 矩形框为蓝色;module vga ( clk, rst_n, hsync, vsync, vga_r, vga_g, vga_b );input clk;...
阅读全文
UART(串口通信)
摘要:串口通信:是一种通用串行数据传输总线,可以实现全双工传输。是一种很常见的通信协议,此次写的程序在基于rs-232通信协议,以前在单片机里也用C51语言写过它的驱动程序,不过现在是用Verilog语言来写它的驱动程序,一种全新的思维模式来驱动它,和单片机大不一样。//程序功能:在上位机(串口调试助手)上发送数据给下位机(PFGA),//下位机接收到数据后,控制LED灯亮灭,并且以原数据返回给上位机;module uart_top ( clk, rst_n, rs232_rx, rs232_tx, l...
阅读全文
VHDL+Verilog良好的代码编写风格(转载)
摘要:良好代码编写风格可以满足信、达、雅的要求。在满足功能和性能目标的前提下,增强代码的可读性、可移植性,首要的工作是在项目开发之前为整个设计团队建立一个命名约定和缩略语清单,以文档的形式记录下来,并要求每位设计人员在代码编写过程中都要严格遵守。良好代码编写风格的通则概括如下:(1) 对所有的信号名、变量名和端口名都用小写,这样做是为了和业界的习惯保持一致;对常量名和用户定义的类型用大写;(2) 使用有意义的信号名、端口名、函数名和参数名;(3) 信号名长度不要太长;(4) 对于时钟信号使用clk 作为信号名,如果设计中存在多个时钟,使用clk 作为时钟信号的前缀;(5) 对来自同一驱动源的信号在不
阅读全文
LCD1602液晶
摘要:这两天都在学习怎样用verilog语言写LCD1602液晶的程序,其实,我对1602液晶还是蛮熟悉的,毕竟,在学单片机的时候,也用C51写过它的驱动程序,还是蛮简单的,但是由于FPGA是并行的,所以,写的驱动程序和单片机的不太一样,今天有幸在网上看到了Crazy Bingo用状态机写的1602液晶的驱动程序,突然觉得verilog语言中的状态机这么强大,竟然能像这样用状态机来写LCD1602液晶的驱动程序;自己写的代码太烂,没敢贴出来,所以,参考了他写的代码,然后修改了一下!//程序实现的功能:在LCD1602液晶上显示字符;module lcd_1602 ( ...
阅读全文
3路抢答器(键盘+数码管+LED灯+蜂鸣器)
摘要:差不多三天的时间都在弄这个抢答器,总算今天把它弄好了,这FPGA中还是得学会建模,学划分模块,对于这一块感觉自己还差那么点,不能很好地考虑好大局,然后细化到每一个模块,因为一个好的顶层模块,可以让子模块的程序更加简洁,否则子模块看起来很复杂,程序写起来也很费劲。好吧,下面来看程序。//程序实现的功能:三路抢答器,当刚上电时,数码管开始倒计时40s;蜂鸣器响一下,四个LED灯闪烁一段时间;//期间如果有键盘按下,蜂鸣器响一下,四个LED灯闪烁一段时间,而数码管显示相应的按键值;//如果40S计时到后,没按键按下,蜂鸣器响一下,四个LED灯闪烁一段时间,数码管又从新开始计时;module qia.
阅读全文
数字秒表(键盘+数码管)
摘要:差不多最近三天都在忙着调试秒表这个程序,其实昨天就能实现秒表的功能的,就是键盘这里出现的问题,当按键下去时,秒表没有停止计数,我很仔细检查了键盘消抖模块,觉得应该没什么问题,这个模块在前面的johnson计数器中用过,消抖情况良好,没有一点抖动!那到底是什么问题呢? 接下来差不多一天时间里,都在思考这个问题,我还是觉的是计数模块出了问题,为什么键盘按下去没有停止计数呢?起初,我还在想,我让分频时钟停下来,不就可以了吗?往往想法是好的,但是实践起来,却事与愿违,现在体会到了实践的重要性,这样还是不能解决,那应该用什么方法解决了?我上网查了很多资料,还是没什么实质的办法。今天突然想到是不是按键下.
阅读全文
|
|