VGA逐行扫描控制器的Verilog建模】的更多相关文章

前言:因为VGA是一种模拟图像传输数据接口,所要将数字信号用DAC转换成模拟量.本文用的一款ADI公司高精度的视频IC,实则一款高带宽的视频DAC.因为VGA时序较为简单,并且网上的VGA驱动基本大同小异.本文也没有什么特别创新之处. 注意点:(a)行扫描计数器和场扫描计数器需要与每个像素点.消隐数目想对应,这样才能得到正确的行列地址坐标. 参考资料:<VESA_VGA时序标准>.<ADV7123a> 源码1:逐行扫描的VGA控制器 `timescale ns / ps `defi…
摘要:今天驱动一款SPANSION公司生产的norflash——S29AL032D70,没有别的参考资料,大致了解一下norflash的内部cmos电路架构以及其用途之后,直接看手册吧. 如何看手册:拿到手册后满满的英文,很多人看了就泄气,那么如何在浩如烟海的英文里找到实际需要的信息,这一点很关键.因为毕竟是用Verilog建模,不像软件描述那么灵活,很多时候受限于硬件描述的瓶颈,因此一开始先给自己起点低一点,建模完成norflash的单块读写功能,至于其他比如CFI里面的其他功能可以以后完善.…
前言:作为经典存储器的三剑客中的flash和sram已经建模测试过了,虽然现在都已经ddr2,ddr3,667MHZ.1333MHZ的天下了,但是接下这周来准备写一下sdram的controller.虽然本科生的时候很早就接触过flash,sram也听过sdram,但是flash和sram一般是作为单片机的一部分集成在内部,因此他们的总线基本被优化成指令,再者sdram的时钟一般100MHZ,用低速的微控制器驱动着实让sdram深受委屈. 这次要驱动的sdram芯片是ISSI的IS42S1640…
前言:经过几天修改,norflash控制器基本已经完成,通过仿真.完整的norflash包含2个模块:直接操作硬件的norflash_ctrl.v与控制ctrl模块的驱动norflash_driver.v.目前只具备扇区块擦除.单字节写.单字节读. 设计思路: norflash_driver模块:可以根据外部控制脉冲信号(可以是按键.开关.其他模块产生的脉冲信号)控制其在每个脉冲下产生相应的“指令.读写地址.待写数据.norflash请求”4种信号.指令可以预先用一个lut存储.用这种方式操作n…
前言:sram顾名思义静态随机存储器,分为asram异步型和ssram同步型.这里驱动DE2上一块ISSI公司的512KB的asram. 设计思路:因为实际应用中单字节读写效率不高,所以本设计中仿照sdram的页突发读写,提高sram的效率.因为sram不像sdram需要定期刷新以及行列地址复用,因此省却很多麻烦.拿到手册以后主要关注的就是其最快运行时钟以及数据稳定的建立时间和保持时间,以及控制线的时间参数,这些参数可以由datasheet的时序参数的min time和max time确定,通过…
前言:终于到了测试篇,不过悲剧了一下.按照之前<二>里面的思路,在顶层用一个复用器驱动读写独立模块的I2C总线确实失败.虽然综合过去了,不过警告里已经说明:底层的2个原本是inout三态口的数据线在顶层复用时候被综合成wire,这样在默认情况下顶层的inout总是输出有效,失去了三态口的作用.囧,看来为了测试I2C的写还是得把读模块并进去可避免这一尴尬…… 测试:DE2+Questasim10.0c+Q2_9.1: 日期:2013七夕夜 结果:以下2张图为仿真波形图与逻辑分析仪采样的时序波形图…
前言:回校了,辦好手續就著手寫測試篇.初步的norflash控制器已經完成,通過硬件測試.目前的norflash完成扇区块擦除.单字节写.单字节读3个功能.博文最后附上源码. 总结:和之前的博文一样,里面的模块没有做时序分析,这一点会在今后的工程里面改进.另外在测试的过程中,发现写完一个字节后只需经过若干个系统时钟周期即可输出正确的写入内容(设置等待写完成的总线方向为输入,可以看到三态口的数据总线显示之前写入的数值,本人源码写入0xcc,可见stp2抓图).这一点和手册里给的单字节写需要9us的…
前言:之前申请了ADI公司的一款ADV7181CBSTZ的视频解码芯片,正好原装DE2板子安的是同系列的ADV7181BBSTZ.虽然都是ADV7181的宗出,但是寄存器配置等等还是有些诧异,引脚也不兼容.而且ADI已经停产了ADV7181B,现在主推C系列的.关于7181不同系列配置和操作问题可以在http://ez.analog.com社区,ADI公司的工程师都会直接帮你回答,我搜索了一部分Q&A,里面的问题基本都能得到不错解决.ps.其实从工程师解答的方式,对比一下自己遇到问题首先该怎么思…
前言:接着上一篇的I2C写操作,今天要实现一个I2C的读操作.虽然在ADV7181B配置内部寄存器时没有必要使用到读操作,但是为了进一步确认寄存器是否在I2C写模块下被正确配置,这一步是必不可少的. 设计思路:由于最终的应用里I2C读模块在调试结束后还是要被剔除,因此决定还是另外建一个读的状态机独立于之前的写状态机.读状态机的思路基本和写状态机的思路一样,需要注意的是一次写操作需要两次的START信号和最后一字节传输结束后的NON-ACKNOWLEDGE. 改进和注意点:相比之前的写模块,读模块…
一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 硬件平台: 1. FPGA型号:Xilinx公司的XC6SLX45-2CSG324 2. VGA接口 3. 液晶显示器 二. 原理介绍 VGA(Video Graphics Array)即视频图形阵列,是IBM在1987年推出的使用模拟信号的一种视频传输标准,在当时具有分辨率高.显示速率快.颜色丰富等优点,在彩色显示器领域得到了广泛的应用.这个…
来源  <verilog HDL那些事--建模篇> 1.并行建模的思想. 2.每个模块最好只有一个功能.(便于修改和扩展,特别在大的项目中) 典型的 HDL 教科书中,才不会要读者了解“模块的性质”.没有性质的模块,常常会使得初学着在设计上和理解容易陷入“混乱”.反之,如果“模块含有性质”的话,在设计和理解方面,思路会而外的清晰.笔者尝试使用“低级建模”去完成程式设计,感觉都是得心应手,而且设计越发的清晰.虽然“低级建模”的建模量确实很多,但是可以把它看成是一种修行练功. verilog HD…
在Kevin写的上一篇博文<SDRAM理论篇之基础知识及操作时序>中,已经把SDRAM工作的基本原理和SDRAM初始化.读.写及自动刷新操作的时序讲清楚了,在这一片博文中,Kevin来根据在上一篇博文中分析的思路来把写一个简单的SDRAM控制器. 我们在上一篇博文中提到了这样一个问题,SDRAM是每隔15us进行刷新一次,但是如果当SDRAM需要进行刷新时,而SDRAM正在写数据,这两个操作之间怎么进行协调呢?因为我们是肯定需要保证写的数据不能丢失,所以,我们可以考虑这样来做:如果刷新的时间到…
5-1 门级建模 VerilogHDL内建基元门: 多输入门:and, nand, or, nor, xor, xnor; 多输出门:buf, not 三态门:bufif0, bufif1, notif0, notif1; 上拉.下拉门:pullup, pulldown; MOS开关:cmos, nmos, pmos, rcmos, rnmos, rpmmos; 双向开关:tran, tranif0, tranif1, rtran, rtranif0, rtranif1; 示例1:2-4译码器…
开发工具:Quartus II 9.1: 仿真软件:Questa Sim 10.0c: 硬件平台:Terasic DE2-115(EP2C35F672C6): 外设:MAX3232: 3个工程文件:"uart_baud.v" + "uart_rx.v" + "uart_tx.v": 2个仿真文件::"uart_rx_tsb.v" + "uart_tx_tsb.v" 设计思路:略 注意事项:波特率模块采样脉冲…
1基础理论部分 VGA(video graphics array)即视频图形阵列,是IBM在1987年随PS/2一起推出的使用模拟信号的一种视频传输标准.VGA相比与现在的视频传输接口来说已经过时,不过作为最低标准,基本上制造商都会接入此接口,图11.1是常见的VGA接口. 图11.1 VGA接口 对于VGA15个引脚的相关说明,如下图所示. 图11.2 VGA引脚说明 大家做实验的时候,可能会有一个误区,那就是做实验时直接把实验板的VGA接口接到笔记本电脑上,还兴高采烈的等待着显示图像,殊不知…
对SDRAM基本概念的介绍以及芯片手册说明,请参考上一篇文章SDRAM操作说明. 1. 说明 如图所示为状态机的简化图示,过程大概可以描述为:SDRAM(IS42S16320D)上电初始化完成后,进入"空闲"状态,此时一直监控外部控制模块给予的控制信号.初始化完成后,外部定时器开始定时,定时周期为SDRAM刷新周期(7.7us),一旦计数到刷新周期后,向状态机发送auto_ref_req(自动刷新请求),此时状态机进入"刷新"状态,这样就确保在无任何操作时,SDRA…
冯诺依曼提出的存储计算,计算存储,因此,几乎所有的CPU和ASIC都会使用存储器,它们的类型很多,包括异步RAM.同步RAM.ZBT RAM.DDR DRAM.ROM等.由于大部分的异步RAM和SRAM都是晶圆代工厂定制的,一次需要修改成适合于FPGA结构的Verilog等效模型.FPGA的综合工具会将这些模型推译出FPGA芯片特有的嵌入式RAM.RAM的特点是一拍写入,两拍读出.所有RAM的设计都是在速度和容量直接的折中. RAM的Verilog建模: 方式1: ///////////////…
     本文主要介绍了Lattice CPLD/FPGA集成开发环境的使用方法,并通过点亮开发板(Mach XO2 Breakout Board)上位号为D2的LED这一实例来演示其开发流程. 1.开发工具 Lattice CPLD/FPGA采用Diamond Design Environment,其初始化界面如下图所示, 2.新建工程 (1)在菜单栏中选择"File--New--Project",弹出一个新建工程向导选项卡,单击"Next". (2)在弹出的对话…
clock gate的cell多采用latch的形式,来实现,尽可能避免glitch的产生. 可以的verilog建模方式: module  cell_ckgate(TE,E,CP,Q) input TE; input E; input CP; output Q; wire E_or; wire E_lat; assign E_or = E | TE; always @(CP or E_or) if (!CP)  begin E_lat <= E_or; end assign Q=E_lat &am…
对SDRAM基本概念的介绍以及芯片手册说明,请参考上一篇文章SDRAM操作说明. 1. 说明 如图所示为状态机的简化图示,过程大概可以描述为:SDRAM(IS42S16320D)上电初始化完成后,进入"空闲"状态,此时一直监控外部控制模块给予的控制信号.初始化完成后,外部定时器开始定时,定时周期为SDRAM刷新周期(7.7us),一旦计数到刷新周期后,向状态机发送auto_ref_req(自动刷新请求),此时状态机进入"刷新"状态,这样就确保在无任何操作时,SDRA…
1.名词解释: FPGA:现场可编程门阵列,一般工艺SRAM(易失性),所以要外挂配置芯片. CPLD:复杂可编程逻辑器件,一般工艺Flash(不易失). ASIC:专用集成电路 SOC:片上系统 SOPC:片上可编程系统 2.Verilog语法类: ①Verilog两大数据类型:一类是线网类型,另一类是寄存器类型. 线网类型表示硬件电路元件之间实际存在的物理连线,有很多种:wire.tri.wor等等,当然日常使用wire最多,其他的都没遇到过. 寄存器类型表示一个抽象的数据存储单元,只能在i…
几年前写了这个,想放到网上,招聘很困难,很多现代计算机科学教育真的很糟,很难找到懂得现代计算机堆栈的第一(基本)原理的人. 如果我曾经再次得到了12周的自由,我会提供这个作为课余学习的play,我也想play. 第一节:晶体管--0.5周 关于那些晶体管--课程概述.描述FPGAs是怎样用晶体管构造的,描述ICs(集成电路)只是一个在可靠的封装中的晶体管集合.明白LUTs(查找表)和材料.能简洁地说出晶体管原理,还有所有项目必须建立在彼此相关联的基础上,不能只建立单独一个.在第一天入手FPGA电…
SV中线程之间的通信可以让验证组件之间更好的传递transaction. SV对verilog建模方式的扩展:1) fork.....join 必须等到块内的所有线程都执行结束后,才能继续执行块后的语句.(所以使用的很少) 2) fork.....join_none 先执行块后的线程,而后再执行块内的线程.不会产生块后的线程必须等块内线程的情形. 3) fork.....join_any 只要块内的线程有一个执行结束,就执行块之后的线程. 需要说明一下,begin.....end之间的顺序操作,…
目的:记录Linux日常所用命令 [20171222]Linux环境下查看硬件组件型号 cat /proc/cpuinfo及lspci 查看CPU [root@t-redhat- ~]# cat /proc/cpuinfo processor : vendor_id : AuthenticAMD cpu family : model : model name : AMD Ryzen Eight-Core Processor ->这里就是CPU型号 stepping : cpu MHz : 299…
Linux源代码阅读——内核引导 转自:http://home.ustc.edu.cn/~boj/courses/linux_kernel/1_boot.html 目录 Linux 引导过程综述 BIOS POST 自举过程 Boot loader 主引导扇区结构 GRUB stage1 GRUB stage2 内核初始化:体系结构相关部分 内核映像结构 header.S 初始化与保护模式 自解压内核 startup_32 内核初始化:体系结构无关部分 核心数据结构初始化 设备初始化 1 Lin…
FPGA作为一种高新的技术.已经逐渐普及到了各行各业.不管是消费类.通信类.电子行业都无处不在它的身影,从1985年第一颗FPGA诞生至 今,FPGA已经历了将近20多个年头,从当初的几百个门电路到如今的几百万门.几千万门--.从原来的上千元的天价到如今几元的超低价,可谓是出现了翻 天覆地的变化. 所以当前正是学习FPGA的最好时机.不管是社会的需求也好,还是技术的成熟度也好.已经达到了前所未有的高度,我们能够花更少的成本,并 以最快的速度掌握一种新的前沿技术,对我们的未来发展将会是很大的帮助.…
要弄清楚Linux PCI设备驱动,首先要明白,所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分.不知道读者理不理解这句话,本人觉得这句话很重要,对于PCI.USB这样的驱动来说,必须要理解这个概念,才能明白该如何看待Linux下的PCI和USB以及类似的总线型的驱动.理由也很简单,就是Linux PCI驱动是内核自带的,或者说内核帮你写好了!而我们需要完成的就是设备本身的驱动,比如网卡驱动等.当然,并不是说内核帮咱们写好了Linux PCI驱动我们什么就不…
每个 PCI 外设有一个总线号, 一个设备号, 一个功能号标识. PCI 规范允许单个系统占 用多达 256 个总线, 但是因为 256 个总线对许多大系统是不够的, Linux 现在支持 PCI 域. 每个 PCI 域可以占用多达 256 个总线. 每个总线占用 32 个设备, 每个设备可以是 一个多功能卡(例如一个声音设备, 带有一个附加的 CD-ROM 驱动)有最多 8 个功能. 因 此, 每个功能可在硬件层次被一个 16-位地址或者 key , 标识. Linux 的设备驱动编写 者,…
目录 Hardware Description Languages Verilog SystemVerilog 对Cracking Digital VLSI Verification Interview:Interview Success这本书的汉化,最新更新请关注微信公众号 摸鱼范式 Hardware Description Languages Verilog [159] verilog中的阻塞赋值和非阻塞赋值有什么区别? verilog支持阻塞与非阻塞两种赋值方式.使用阻塞赋值时,计算和赋值…
大家都知道,当我们的 Linux 系统计算机出现问题时,需要对其排除故障,首先需要做的是找出计算机的硬件信息.下面介绍一个简单易用的应用程序--HardInfo,你可以利用它来显示你电脑的每个硬件方面的信息,它的好处就是不必去拆分电脑单独查看每个部件. 安装HardInfo工具 有的小伙伴会问如何去安装这个软件呢?我们可以在发行版的软件中心或软件包管理器中找到 HardInfo 应用程序.另外,我们也可以在 "Ubuntu"(乌班图)软件中心去获取,在这里这个应用程序叫做 System…