随笔分类 -  FPGA/CPLD

FPGA CPLD
摘要:摘自 特权同学的《深入浅出玩转FPGA》module sys_ctrl( input clk, // System input clock, 10MHz input rst_n, // System input reset signal ... 阅读全文
posted @ 2012-11-06 15:26 Craftor 阅读(685) 评论(0) 推荐(0)
摘要:前言:鉴于一般ADI的AD、DA、时钟类的芯片应用的比较广泛,正好手上的一块板子上有三片ADI的芯片,都是SPI的接口。就想到设计一个比较通用的SPI Master,希望可以做到基本通用。一、SPI的接口时序如下(摘自AD9517-3 datasheet)1、 前16bit为Instruction Header,就是控制读/写、地址、长度(读/写)的。2、后面跟的是读/写的数据。说明:sdio是双向的,一般默认的就是双向的,所以sdo引脚可以不用。二、设计SPI时序SPI的时序很简单,就是一个时钟对应一个数据。通常SCLK的最高频率不超过25MHz。对于低速的时序,我们可以在2倍或者4倍的系统 阅读全文
posted @ 2012-09-20 14:30 Craftor 阅读(6798) 评论(1) 推荐(0)
摘要:本文有Craftor原创,转载请保留出处。 I2S是数字音频的接口,这里不用多说,请读者自己查阅相关资料。 本文中要设计的是FPGA与数字音频芯片的I2S接口时序。简单点说,就是通过FPGA向音频芯片写数据,通过的是I2S总线,因为这个总线比较麻烦,我在这里做成接口模块,其它模块直接拿来用就可以了。 阅读全文
posted @ 2011-11-06 11:17 Craftor 阅读(13309) 评论(45) 推荐(0)
摘要:声明:Craftor原创,转载请注明出处。 使用芯片:CY7C68013A(Cypress)与XC3S50AN(Xilinx) 一、原理图 FPGA与EZ-USB通过异步FIFO方式连接,以下截图来自于Cypress的手册EZ-USB_TRM.pdf。 将图9-19和9-22两图中的信号合并在一起,与FPGA连接即可。 本例子中使用了以下信号: FIFOADR[7:0]... 阅读全文
posted @ 2011-11-05 10:00 Craftor 阅读(7626) 评论(12) 推荐(1)
摘要:简单来说,HDL的精髓就是if、case、FSM(有限状态机),而if、case通常又是伴随在状态机之中的。所以,状态机的重要性是毋庸置疑的。通常,在一个always或者process中,用到的都是一阶的状态机比较多,二阶以上的较复杂,代码可读性不高,所以不用常见,也极少用到。 状态机的核心在于状态的跳转,也是很多初学者头疼的地方,尤其是当一个状态机里的状态数超过10个的时候,考虑不周,很容易混乱... 阅读全文
posted @ 2011-04-09 14:47 Craftor 阅读(1740) 评论(3) 推荐(1)
摘要:UART的结构大家并不陌生,用HDL语言写一个UART收发器也并不难。本文中作者给出一个可以应用到实际工程中的UART收发器,并且是经过验证的。 UART的结构如上图所示。其核心在于两个FIFO的运用。其实收和发两个部分是独立的,完全可以分开单独使用,作者为了方便起见,将两者放在了一起。 原理也比较简单,以发送为例。FIFO是8位的,只要上层模块不停地往发送FIFO里填数据,发送器就会自动从FIF... 阅读全文
posted @ 2010-12-21 12:14 Craftor 阅读(3014) 评论(2) 推荐(3)
摘要:摘要: 此版本的设计中,笔者将协议里对总线的操作细分为4个,即起始(Start)、写(Write)、读(Read)、停止(Stop),并给对应的操作编码:起始(1000)、写(0100)、读(0010)、停止(0001)。每次读写操作中也包括了一次应答操作。上层模块需要操作总线时,仅需要按照芯片操作 阅读全文
posted @ 2010-09-25 17:53 Craftor 阅读(9523) 评论(12) 推荐(4)
摘要:在ModelSim中添加Xilinx仿真库 说明: l ModelSim一定要安装在不带空格的目录下,即不要安装在“Program Files”目录下。如作者是安装在D:\softwares\Modelsim目录下。 l ISE软件也最好安装在不带空格的目录下。 1、找到开始菜单->程序->Xilinx ISE Design Suite 11 -> ISE -> A... 阅读全文
posted @ 2010-09-14 09:55 Craftor 阅读(19856) 评论(0) 推荐(3)
摘要:ModelSim之强大是毋庸置疑的。而ModelSim脚本语言的强大,也同样让人佩服得五体投地。在此文中,Craftor将一步一步教大家如何编写Modelsim的脚本,让仿真变得更容易些! 这里先推荐一个代码编辑器,Crimson Editor,支持所有常见的源代码编辑,功能非常强大,完全可按自己喜好定制。以下文章的内容也会基于于这个文本编辑器。 下载地址:http://myfpga.goog... 阅读全文
posted @ 2010-09-04 14:41 Craftor 阅读(6224) 评论(3) 推荐(5)
摘要:一般来说,FPGA厂商的EDA软件里都有除法器的IP核。以Xilinx为例,Core Generator 里就可以生成除法器,任意位数。不过生成的除法器是流水线形式的。也就是说,如果是有批量的数据做除法,那么肯定是非常快的,只要经过一个固定的Lantency之后,结果就源源不断地出来。 但是我在做图像压缩算法的时候,遇到了这样一个问题:我需要前一次除法的结果代入到下一次除法里去,这样看来,那个固定... 阅读全文
posted @ 2010-09-04 00:40 Craftor 阅读(4040) 评论(0) 推荐(1)
摘要:Craftor原创,转载请保留此处。 4/8/16/32/64位乘法器的设计,单个时钟周期运算出结果。思路如下: 4位乘法器 a,b输入,y输出。使用case语句,对于输入a,y输出是b输入的16种可能。单个周期内可以输出结果。8位乘法器 a,b输入,y输出。将a、b分成高4位和低4位,使用4位乘法器进行分别运算,然后进行相加。单个周期内可以输出结果。16位乘法器 a,b输入,y输出。将a、b分成... 阅读全文
posted @ 2010-09-03 17:30 Craftor 阅读(3780) 评论(2) 推荐(3)