FPGA入门:内里本质探索——器件结构
需求,当然了,并非这么个结构框架里的所有东西在每个电路实现中都能派上用常正所谓“可编程”(Programmable),设计者所需要实现的电路会根据具体的情况来开启或关闭各个模块的使用或连接。
通常MAX II器件的LEs结构在实际应用中为了达到功能的最优化,会被作为正常模式(Normal Mode)或动态算术模式(DynamicArithmetic Mode)使用。两种模式对LEs资源的使用有所不同,总之大家记住一个点,加减等运算用算术模式实现是最佳的选择,其他情况下一般是正常模式来实现,而到底用哪种模式来实现也不用设计者操心,Quartus II软件会自动判断和优化,咱只要知道有这么一回事就好。我们看图3.20,这是正常模式下的LEs结构,相比于完整的LEs结构,少了好多功能块。
图3.20 正常模式下的LEs
说了这么多理论,估计大伙都有些头大了。下面举个例子,让大家看看一个简单的逻辑功能是如何用这个正常模式下的LEs来实现的。有如下一段Verilog代码:
module p22vlg(
clk,rst_n,
ain,bin,cin,dout
);
input clk;
input rst_n;
input ain,bin,cin;
output reg dout;
always @(posedge clk or negedge rst_n)
if(!rst_n) dout <= 1'b0;
else dout <= (ain & bin) |cin;
endmodule
看不懂不要紧,咱还没开始学语法呢。这个电路中,输入信号ain、bin和cin,复位信号rst_n,时钟信号clk,输出信号dout。输出信号dout在复位信号rst_n有效时输出为0,在撤销复位(rst_n = 1)后每个时钟上升沿锁存当前的最新值,这个最新值为当前输入信号ain与bin再或cin的结果。其逻辑功能如图3.21所示,是一个典型的时序逻辑,这个电路中有我们前面提到的与门、或门和寄存器等基本组件。
图3.21 逻辑功能视图
再看经过Quartus II工具的“翻译”后,前面这段逻辑被映射到了MAX II的LEs中,和图3.20相比较,可以确认这是LEs的正常模式,图中高亮部分是被“编程”开启功能的电路实现。不要感到稀奇,这个原本要实现与门、或门等逻辑功能的电路却不是用与门、或门来实现的,而是我们前面提到的LUT在这里扮演了很重要的角色。有人可能又要纳闷了LUT到底为何物?有那么神通广大么?别说,还真那么回事。就拿4输入的LUT来说,其实它里面就相当于一个16bit的存储器,或者你也可以理解LUT里面存放着4个输入信号的真值表,输入信号通过这个真值表便可得到期望的结果,就如我们这个实例一样。
图3.22 LEs中的逻辑实现
本文节选自特权同学的图书《FPGA/CPLD边练边学——快速入门Verilog/VHDL》
书中代码请访问网盘:http://pan.baidu.com/s/1bndF0bt
FPGA CPLD Verilog VHDL 电路 EDA 电阻 Quartus 相关文章:
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 采用EEPROM对大容量FPGA芯片数据实现串行加载(03-18)
- 赛灵思:可编程逻辑不仅已是大势所趋,而且势不可挡(07-24)
