概述:

本节主要讲解LUT构造的组合逻辑电路中的译码电路,编码电路,选择器电路。这些基本电路是使用的最广泛的电路,但是一般情况下很容易忽略这些电路。其中译码电路是构成RAM中写地址的电路,而选择电路是构成RAM中数据读出的地址。编码电路用于模数转换器ADC的编码等。这些都是使用FPGA的过程 中经常用到的,但是容易忽视他的设计原理。本节通过基本的verilog语句来测试这些电路的构造原理。

使用case语句构造

case(a)_:_;...endcase

主要内容

1.译码电路

2.编码电路

3.选择器电路

1.译码电路

代码

module assign1(input[1:0] A,output reg [3:0]y);always @(*) case (A)2'b00 : y <= 4'b0001;2'b01 : y <= 4'b0010;2'b10 : y <= 4'b0100;2'b11 : y <= 4'b1000;default : y <= 4'b0000; endcaseendmodule

RTL结构图

技术原理图

2.编码电路

代码

module assign1(input[3:0] A,output reg [1:0]y);always @(*)case (A)4'b0001 : y <= 2'b00;4'b0010 : y <= 2'b01;4'b0100 : y <= 2'b10;4'b1000 : y <= 2'b11;default : y <= 2'b00;endcaseendmodule

RTL结构图

技术原理图

3.选择电路

代码

module assign1(input[1:0] A,input din1,din2,din3,din4,output reg y,outputy2); assign y2 = A[0]" />

技术原理图

4. 总结

1. 通过awalys @(*) 语句实现组合逻辑语句

2. case语句可以实现译码电路,编码电路,选择电路的实现

3. 译码电路和编码电路会遇到宽组合逻辑设计场合,列如1G的ram的写地址线,65536位ADC的编码等,

4. 选择电路是FPGA内部结构的基本元件,他的使用频率高,使用LUT+MUX结合来设计组合电路,可以提高资源的利用率。此外选择器也作为存储器的读出地址线。