随笔分类 -  FPGA/数字前端

摘要:开漏电路中的“漏”即是MOSFET的漏极,开漏电路即是指MOSFET的漏极为输出的电路。一般的用法是在漏极外部的电路添加上拉电阻。完整的开漏电路应该由开漏器件和开漏上拉电阻组成,如图1所示:图1开漏电路有如下特点: 1、利用外部电路的驱动能力,减少IC内部驱动。当IC内部MOSFET导通时,驱动电流从外部VCC流经上拉电阻R pull-up,MOSFET到GND,IC内部只需要很小的栅极驱动电流。 2、可以将多个开漏输出PIN连接到一条线上,形成“与逻辑”。如上图中,当PIN_A、PIN_B、PIN_C任意一个变低后,开漏线上的逻辑就为0。这也是I2C、SMBus等总线判断总线占用状态的原.. 阅读全文
posted @ 2014-04-06 21:28 woaichengdian 阅读(2293) 评论(0) 推荐(0)
摘要:1、系统同步输出 分析FPGA内部时序单元到输出端口的路径时,当source clock 和 destination clock 来自统一系统时钟,称为系统同步输出(system synchronous output)。 当source clock 或者 destination clock 不在FPGA设计中时,则需要约束一个虚拟时钟,如图1所示,source clock 是CLKA,destination clock 是CLKB,其中CLKA通过FPGA时钟输入端口引入FPGA内部(约束成主时钟),而CLKB引入到FPGA外部的板上芯片,并没有引入FPGA内部,因此需要将CLKB约束成虚.. 阅读全文
posted @ 2014-04-03 19:22 woaichengdian 阅读(4512) 评论(0) 推荐(0)
摘要:所谓资源分配,是指在互斥条件下,共享ALU的过程。 通常利用多路选择器的引入,来减少ALU的个数,从而节省资源。 看下列实例:if (!ishreg) data_out = addr_load + chip_sel;else if (rd_wr) data_out = read + write;else data_out = addr_load + read; 改进后:if (!shReg)begin temp1 = addr_load; temp2 = chip_sel;endelse if (rd_wr)begin temp1 = read; temp2 = wri... 阅读全文
posted @ 2014-04-02 22:17 woaichengdian 阅读(366) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2014-03-25 22:33 woaichengdian 阅读(977) 评论(0) 推荐(0)
摘要:即使用HDL编码,进行RTL级的实现。 RTL设计中的一大问题就是异步时钟设计。最简单的,对于电平信号,如一些flag信号或者慢速的控制信号,处理方法是在新时钟域中对该信号进行2级寄存器寄存,减少亚稳态的发生。对于脉冲处理,可以采用握手协议(req-ack)。 如果前级时钟快,后级时钟慢,则需要采用FIFO设计。同步FIFO比较简单,读写时钟相同。异步FIFO比较困难,难点之一就是读写地址的判断。由于读写地址的产生在不同时钟域中,而它们的判断需要在同一时钟域中进行,这本身就涉及到异步信号的处理问题。对于读写地址的判断,一般采用格雷码解决。 RTL设计中时钟本身的设计问题也需要注意。尽... 阅读全文
posted @ 2014-03-25 22:28 woaichengdian 阅读(813) 评论(0) 推荐(0)
摘要:主要设计到功能定义及架构设计,总线架构的配置,模块设计,数据流的分配,时钟设计等问题。总线包括模块之间、模块和MCU之间、外部主机和芯片之间通信等等。时钟涉及到数据流的规划,通信接口或内部MCU的时钟约定,工艺条件、功耗等因素。模块设计需要明确接口和定义。无论时钟还是电压,都可以通过控制开关来实现功耗要求。时钟实现比较简单,电压控制一般是实现在集成有电源管理芯片的较大规模芯片上。但未来的设计趋势是,即使没有电源管理芯片,电压gating也需要纳入考虑范围。在soc系统设计上,一个重要环节是MCU内核的选型(如cortexA, R, M等系列),对于硬件设计人员,不需要对它的指令集了解太多,但需 阅读全文
posted @ 2014-03-25 22:27 woaichengdian 阅读(277) 评论(0) 推荐(0)
摘要:1、一个模块(module)里面最好存在一个clk;因此在fifo_mem模块内只使用w_clk时钟,不使用r_clk时钟。2、为判断FIFO的空(empty)、满(full)状态,需将写操作指针(w_ptr)、读操作指针(r_ptr)进行比较,因此需要将w_ptr同步到r_ptr时钟域,以及将r_ptr同步到w_ptr时钟域;使用常用的两级寄存器进行寄存。3、读写地址(w_addr、r_addr)使用二进制,读写指针(w_ptr、r_ptr)因为需要同步到异步时钟域上,因此使用格雷码。4、由二进制转换为格雷码的逻辑:gray_code = (bin_code << 1) ^ bi 阅读全文
posted @ 2014-03-25 22:26 woaichengdian 阅读(472) 评论(0) 推荐(0)
摘要:一般分为静态功耗和动态功耗。 动态功耗发生在门开关(或状态翻转)的瞬间。是由于对电容充电和电源和地之间短暂电流通路造成的。它正比于开关频率。 静态功耗总是存在。是有电源和地之间的静态导通电流(或漏电流)引起的。 降低动态功耗: 1、降低内核供电电压。降低供电电压会影响到时序性能。为了弥补这个影响,一般采用流水线(pipelining)和并行(parallelism)设计方法来提高设计性能。当然,这样同时也会增加设计面积。 2、降低电容负载和逻辑开关频率。 阅读全文
posted @ 2014-03-24 22:09 woaichengdian 阅读(588) 评论(0) 推荐(0)
摘要:一个合格的FPGA工程师需要掌握哪些知识?这里根据自己的一些心得总结一下,其他朋友可以补充啊。1.Verilog语言及其于硬件电路之间的关系。2.器件结构(最好熟练掌握Spartan3,Vertix4系列的器件结构,及其资源于Verilog行为描述方法的关系。)。3.开发工具(熟练掌握Synplify,Quartus,ISE,Modelsim)。4.数字电路(组合电路,触发器,特别是D触发器构成分频器,奇数倍分频占空比为50%,时序电路,并且能用Verilog语言描叙。)。5.熟悉FPGA设计流程(仿真,综合,布局布线,时序分析)。6.熟练掌握资源估算(特别是slice,lut,ram等资源的 阅读全文
posted @ 2013-10-18 09:14 woaichengdian 阅读(725) 评论(0) 推荐(0)
摘要:1. CMOS电路结构,包括静态CMOS电路,latch还有Flip Flop的门级与CMOS级的结构;2. 基本逻辑化简与变换;基本状态机;计数器;3. 时序参数与静态时序分析:必考 setup/hold time及violation fix false path multi-cycle path 各种时序优化技巧和DC/PT技巧4. clocking:时钟频率推倒,skew,jitter原因及影响,CTS等;5. 跨时钟域处理和异步fifo:几乎必考 亚稳态概念 各种情况下的分析:异步fifo设计;fifo size的确定;size为非2的幂次的处理,等等;可以有各种变种 强烈推荐Cumm 阅读全文
posted @ 2013-09-20 18:35 woaichengdian 阅读(633) 评论(0) 推荐(0)
摘要:描述状态机推荐采用三段式FSM描述方法。这种写法使用3个always模块,一个always模块采用同步时序的方式描述状态转移,一个always采用组合逻辑的方式判断状态转移条件,描述状态转移规律,第三个always模块使用同步时序电路描述每个状态的输出。 这种做法好处在于便于阅读、理解、维护,更重要的是利于综合器优化代码。利于用户添加合适的时序约束条件,利于布局布线器实现设计。 三段式FSM写法参考如下程序:module fsm(in1, in2, clk, rst_n, out1, out2, err);input in1, in2;input clk, ... 阅读全文
posted @ 2013-05-03 09:30 woaichengdian 阅读(487) 评论(0) 推荐(0)
摘要:verilog语言有三种描述方法:(1)数据流描述:采用assign语句,该语句被成为连续赋值语句。 例:异或操作assign out = ina^inb;(2)行为描述:使用always和initial语句块,其中出现的语句称为过程赋值语句。 例:异步复位D触发器always @(posedge clk or negedge rst_n)begin if (!rst_n) #DELAY out <= 1'b0; else #DELAY out <= data;end(3)结构化描述:实例化已有的功能模块。包括三种形式: a)module实例化:... 阅读全文
posted @ 2013-04-30 13:21 woaichengdian 阅读(1473) 评论(0) 推荐(0)