前言:经过几天修改,norflash控制器基本已经完成,通过仿真.完整的norflash包含2个模块:直接操作硬件的norflash_ctrl.v与控制ctrl模块的驱动norflash_driver.v.目前只具备扇区块擦除.单字节写.单字节读. 设计思路: norflash_driver模块:可以根据外部控制脉冲信号(可以是按键.开关.其他模块产生的脉冲信号)控制其在每个脉冲下产生相应的“指令.读写地址.待写数据.norflash请求”4种信号.指令可以预先用一个lut存储.用这种方式操作n…
摘要:今天驱动一款SPANSION公司生产的norflash——S29AL032D70,没有别的参考资料,大致了解一下norflash的内部cmos电路架构以及其用途之后,直接看手册吧. 如何看手册:拿到手册后满满的英文,很多人看了就泄气,那么如何在浩如烟海的英文里找到实际需要的信息,这一点很关键.因为毕竟是用Verilog建模,不像软件描述那么灵活,很多时候受限于硬件描述的瓶颈,因此一开始先给自己起点低一点,建模完成norflash的单块读写功能,至于其他比如CFI里面的其他功能可以以后完善.…
前言:回校了,辦好手續就著手寫測試篇.初步的norflash控制器已經完成,通過硬件測試.目前的norflash完成扇区块擦除.单字节写.单字节读3个功能.博文最后附上源码. 总结:和之前的博文一样,里面的模块没有做时序分析,这一点会在今后的工程里面改进.另外在测试的过程中,发现写完一个字节后只需经过若干个系统时钟周期即可输出正确的写入内容(设置等待写完成的总线方向为输入,可以看到三态口的数据总线显示之前写入的数值,本人源码写入0xcc,可见stp2抓图).这一点和手册里给的单字节写需要9us的…
前言:接着上一篇的I2C写操作,今天要实现一个I2C的读操作.虽然在ADV7181B配置内部寄存器时没有必要使用到读操作,但是为了进一步确认寄存器是否在I2C写模块下被正确配置,这一步是必不可少的. 设计思路:由于最终的应用里I2C读模块在调试结束后还是要被剔除,因此决定还是另外建一个读的状态机独立于之前的写状态机.读状态机的思路基本和写状态机的思路一样,需要注意的是一次写操作需要两次的START信号和最后一字节传输结束后的NON-ACKNOWLEDGE. 改进和注意点:相比之前的写模块,读模块…
前言:作为经典存储器的三剑客中的flash和sram已经建模测试过了,虽然现在都已经ddr2,ddr3,667MHZ.1333MHZ的天下了,但是接下这周来准备写一下sdram的controller.虽然本科生的时候很早就接触过flash,sram也听过sdram,但是flash和sram一般是作为单片机的一部分集成在内部,因此他们的总线基本被优化成指令,再者sdram的时钟一般100MHZ,用低速的微控制器驱动着实让sdram深受委屈. 这次要驱动的sdram芯片是ISSI的IS42S1640…
前言:终于到了测试篇,不过悲剧了一下.按照之前<二>里面的思路,在顶层用一个复用器驱动读写独立模块的I2C总线确实失败.虽然综合过去了,不过警告里已经说明:底层的2个原本是inout三态口的数据线在顶层复用时候被综合成wire,这样在默认情况下顶层的inout总是输出有效,失去了三态口的作用.囧,看来为了测试I2C的写还是得把读模块并进去可避免这一尴尬…… 测试:DE2+Questasim10.0c+Q2_9.1: 日期:2013七夕夜 结果:以下2张图为仿真波形图与逻辑分析仪采样的时序波形图…
前言:sram顾名思义静态随机存储器,分为asram异步型和ssram同步型.这里驱动DE2上一块ISSI公司的512KB的asram. 设计思路:因为实际应用中单字节读写效率不高,所以本设计中仿照sdram的页突发读写,提高sram的效率.因为sram不像sdram需要定期刷新以及行列地址复用,因此省却很多麻烦.拿到手册以后主要关注的就是其最快运行时钟以及数据稳定的建立时间和保持时间,以及控制线的时间参数,这些参数可以由datasheet的时序参数的min time和max time确定,通过…
前言:因为VGA是一种模拟图像传输数据接口,所要将数字信号用DAC转换成模拟量.本文用的一款ADI公司高精度的视频IC,实则一款高带宽的视频DAC.因为VGA时序较为简单,并且网上的VGA驱动基本大同小异.本文也没有什么特别创新之处. 注意点:(a)行扫描计数器和场扫描计数器需要与每个像素点.消隐数目想对应,这样才能得到正确的行列地址坐标. 参考资料:<VESA_VGA时序标准>.<ADV7123a> 源码1:逐行扫描的VGA控制器 `timescale ns / ps `defi…
前言:之前申请了ADI公司的一款ADV7181CBSTZ的视频解码芯片,正好原装DE2板子安的是同系列的ADV7181BBSTZ.虽然都是ADV7181的宗出,但是寄存器配置等等还是有些诧异,引脚也不兼容.而且ADI已经停产了ADV7181B,现在主推C系列的.关于7181不同系列配置和操作问题可以在http://ez.analog.com社区,ADI公司的工程师都会直接帮你回答,我搜索了一部分Q&A,里面的问题基本都能得到不错解决.ps.其实从工程师解答的方式,对比一下自己遇到问题首先该怎么思…
verilog 代码分析与仿真 注意:使用vivado 自带的仿真工具, reg和wire等信号需要赋予初始值 边沿检测 module signal_test( input wire cmos_pclk_i, input wire cmos_vsync_i ); // 上升沿捕获 :] vsync_d; wire vsync_start; wire vsync_end; always @(posedge cmos_pclk_i) begin vsync_d <= {vsync_d[], cmos…
[第一季]CH05_FPGA设计Verilog基础(二) 5.1状态机设计 状态机是许多数字系统的核心部件,是一类重要的时序逻辑电路.通常包括三个部分:一是下一个状态的逻辑电路,二是存储状态机当前状态的时序逻辑电路,三是输出组合逻辑电路.通常,状态机的状态数量有限,称为有限状态机(FSM).由于状态机所有触发器的时钟由同一脉冲边沿触发,故也称之为同步状态机. 根据状态机的输出信号是否与电路的输入有关分为Mealy型状态机和Moore型状态机. 1.Moore型有限状态机:是指那些输出信号仅与当前…
1 前言 在 前面的博客  CRC校验原理和verilog实现方法(一)  中,介绍了CRC校验的原理和手动计算过程.本文说一下我在学习CRC校验FPGA实现的一点心得体会. 2 线性反馈移位寄存器 线性反馈移位寄存器简称LFSR,用于产生可重复的伪随机序列,也可用来实现CRC校验.LFSR主要由触发器(寄存器).异或门以及反馈线路组成. 已知多项式,其中gn~g0 是系数,g0取值为1,其他系数可以是0或1.该多项式用二进制表示为,用LFSR表示为: 或者表示为: 第一种表示法为伽罗瓦LFSR…
MSSql提供了一个新的数据类型 HierarchyID,用来处理层次结构的数据,这个数据类型是系统内置的CLR数据类型,不需要专门激活 SQL/CLR 功能即可使用.当需要表示各值之间的嵌套关系,并且该关系可以采用顺序路径语法表达时,HierarchyID 非常有用. 顺序路径看起来有点像文件路径,但它不使用目录和文件名,而是使用数值.与其他父/子关系类似,所有顺序路径都必须归结于根节点.在 SQL Server 2008 中,根节点的文本表示是一个 (/) 字符.具有顺序路径的元素通常由整数…
1. 算法介绍 CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数.双曲线.指数.对数的计算.该算法通过基本的加和移位运算代替乘法运算,使得矢量的旋转和定向的计算不再需要三角函数.乘法.开方.反三角.指数等函数,计算向量长度并能把直角坐标系转换为极坐标系.因为Cordic 算法只用了移位和加法,很容易用纯硬件来实现,非常适合FPGA实现. CORDIC算法完成坐标或向量…
这一篇笔记主要记录Procedural,Process,Task and function,Interface和Communication中值得注意的点. 1.Procedural 写testbench的时候,除了tb与硬件交互的地方使用非阻塞赋值,tb里面其他地方一律用阻塞赋值,OK logic [:] d0,d1; initial begin d0 <= ; $display("d0 value %0d",d0); //d0=x;logic在未被初始化的时候是x d1 = ;…
来源  <verilog HDL那些事--建模篇> 1.并行建模的思想. 2.每个模块最好只有一个功能.(便于修改和扩展,特别在大的项目中) 典型的 HDL 教科书中,才不会要读者了解“模块的性质”.没有性质的模块,常常会使得初学着在设计上和理解容易陷入“混乱”.反之,如果“模块含有性质”的话,在设计和理解方面,思路会而外的清晰.笔者尝试使用“低级建模”去完成程式设计,感觉都是得心应手,而且设计越发的清晰.虽然“低级建模”的建模量确实很多,但是可以把它看成是一种修行练功. verilog HD…
在Kevin写的上一篇博文<SDRAM理论篇之基础知识及操作时序>中,已经把SDRAM工作的基本原理和SDRAM初始化.读.写及自动刷新操作的时序讲清楚了,在这一片博文中,Kevin来根据在上一篇博文中分析的思路来把写一个简单的SDRAM控制器. 我们在上一篇博文中提到了这样一个问题,SDRAM是每隔15us进行刷新一次,但是如果当SDRAM需要进行刷新时,而SDRAM正在写数据,这两个操作之间怎么进行协调呢?因为我们是肯定需要保证写的数据不能丢失,所以,我们可以考虑这样来做:如果刷新的时间到…
开发工具: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" 设计思路:略 注意事项:波特率模块采样脉冲…
在现实控制中,被控系统并非是线性时不变的,往往需要动态调整PID的参数,而模糊控制正好能够满足这一需求,所以在接下来的这一节我们将讨论模糊PID控制器的相关问题.模糊PID控制器是将模糊算法与PID控制参数的自整定相结合的一种控制算法.可以说是模糊算法在PID参数整定上的应用. 1.模糊算法的原理 模糊算法是一种基于智能推理的算法,虽然称之为模糊算法其实并不模糊,实际上是一种逐步求精的思想.一个模糊控制器主要是由模糊化,模糊推理机和精确化三个功能模块和知识库(包括数据库和规则库)构成的.在此我们…
摘要: 数据集编辑功能界面介绍以及常见问题总结. 在数据集编辑界面可以进行数据建模来更好的展示数据,创建数据集默认将数值类型字段作为度量,日期.字符串等类型作为维度,度量可以根据维度分组展示.下面来介绍一下常见功能: 维度编辑: 如下图为维度编辑功能: 1.编辑: 修改维度显示名以及备注信息 2.克隆维度:快速复制一个维度,生成的维度将会自动带上副本以做提示 3.删除:删除该字段 4.新建计算字段(维度):可新创建一个维度字段,并且可自定义其计算方式 5.移动到:快速将维度纳入到已有层次结构中,…
SQL Server提供了一个新的数据类型 HierarchyID,用来处理层次结构的数据,这个数据类型是系统内置的CLR数据类型,不需要专门激活 SQL/CLR 功能即可使用.当需要表示各值之间的嵌套关系,并且该关系可以采用顺序路径语法表达时,HierarchyID 非常有用. 顺序路径看起来有点像文件路径,但它不使用目录和文件名,而是使用数值.与其他父/子关系类似,所有顺序路径都必须归结于根节点.在 SQL Server 2008 中,根节点的文本表示是一个 (/) 字符.具有顺序路径的元素…
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译码器…
步骤: (一)统一指标类型:指标正向化(转化为极大型)(论文) 越大越好极大型指标,效益型指标 越小越好极小型指标,成本型指标 max-x,max=max{xi} 落在某个区间[a,b]是最好的,区间型指标 M=max{a-min{xi},max{xi}-b} 1-(a-xi)/M       xi<a 1                    a<xi<b 1-(xi-b)/M       b<xi 靠近某个值xbest是最好的,中间型指标 M=max{|xi-xbest|} 1…
写在前面 本篇先不讨论Data Vault其本身,因为不见得所有人都接受这个.但是里边有一些很不错的东西跟主流的数据仓库方法是有共同点的,所以这里主要讨论这些共同的方法,在笔者看来,无论是Kimball还是DV,这些方法都是很有用的.这个系列为作者本人哥本哈士奇的个人理解和总结,可能会有理解上的偏差,也欢迎大家一起来讨论. 哈希计算 常用的哈希计算,HASH KEY, HASH FULL, HASH DIF,这里会有简单的介绍. 关于如何做哈希计算,可以参考这个链接: https://www.h…
整形器的接口时序: reg,grant是维持了两个clk的. chid ,length在发送数据期间不可以变化. 第一个data数据必须在start上升沿的同一个clk发送. reg,grant两者之间至少相差一个clk. grand表示自己的内存足够存储要求数据的长度的空间.表示的数据包能够接受. data必须连续的发送,之间不能够有间隔. end是在最后一个data的一开始就拉高.…
各类显示屏的显示原理大部分是利用人眼的视觉暂留效应.比如之前的数码管显示就是设计每个周期内各个小段按顺序显示,来达到显示一个数字的效果. VGA同理,显示屏在显示时是一个像素一个像素地显示,在人眼看来所有像素是同时显示的,便构成了一幅图片.①显示器的分辨率越高(如4k屏:3840*2160),显示的图像越清晰.②显示器的刷新率(即每秒能够显示几幅图片)越高,显示器越不卡,性能更好.(一个周期内,每个像素点显示的时间长度和显示屏的分辨率以及驱动电路的系统时钟频率决定了显示屏的刷新率.系统时钟频率越…
本文主要学习Verilog的仿真特性,以及仿真器对Verilog的处理,算是对Verilog知识的增量学习.本文内容与我的另一篇博文(http://www.cnblogs.com/IClearner/p/7262653.html)一些有重叠的内容. 一.Verilog仿真特性 虽然现在SystemVerilog在仿真验证中占据主流的位置,不过了解一下Verilog是如何仿真的,对以后学习systemverilog也是有帮助的.本文主要学习verilog的一些仿真特性,因为一方面,若是写的代码质量…
一.设计模糊控制器1.1 创建项目文件夹在此路径如图 1.2 打开MATLAB打开MATLAB R2012a切换当前目录为上一步路径,如图 1.3 设计模糊控制器打开模糊控制器设计对话框 根据模糊控制器的输入输出设计模糊控制器,在此以二输入一输出为例. 完成后如图(左)所示,然后对每个输入输出变量设置隶属函数,如图(右). 添加论域数量 设置隶属函数 完成后如图所示 设计模糊规则 保存刚刚设计的模糊控制器,如下图所示 加载模糊控制器到MATLAB中 二.设置控制系统打开simulink仿真器 设…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39828653 组合模式(Composite):组合模式有时又叫部分-总体模式.将对象组合成树形结构来表示"部分-总体"层次结构. 组合模式在处理树形结构的问题时比較方便. 一.uml建模: 二.代码实现 /** * 演示样例:组合模式有时也称"整合-部分"模式 * * 组合模式在处理树形结构的问题时比較方便 * * 节点 */ class TreeNode…
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/40027109 中介者模式(Mediator):主要用来减少类与类之间的耦合的,由于假设类与类之间有依赖关系的话.不利于功能的拓展和维护,由于仅仅要改动一个对象,其他关联的对象都得进行改动. 一.uml建模: 二.代码实现 /** * 中介者模式(Mediator):主要用来减少类与类之间的耦合的,由于假设类与类之间有依赖关系的话. * * 不利于功能的拓展和维护.由于仅仅要改动一个对象,…