FPGA之复选器(2)

8:1 复选器

每个slice具有一个F7AMUX和一个F7BMUX

F7AMUX 和 F7BMUX 原语:

MUXF7 MUXF7_inst (

.O(O),//Output of MUX to general routing.

I0(10), // Input (tie to LUT6 O6 pin)

II(II), //Input (tie to LUT6 O6 pin)

SS)// Input select to MUX

这两个多路复选器组合了两个 LUT 的输出,以形成多达 13 个输入(或 8:1 多路复选器)的组合功能。一个slice 中最多可以实现两个 8:1 MUX,如下图所示。

以LUTA和LUTB组从的8:1复选器为例不经过D触发器的对应代码:

always@(*)

if(AX)begin

case (SELA[1:0])

2"b00: A= DATA_A[0];

2'b01: A=DATA_A[1];

2'b10: A= DATA_A[2];

2'b11: A=DATA_A[3];

default:A=1'bx;

endcase

end

else begin

case (SELB[1:0])

2'b00: B=DATA_B[0];

2'b01: B=DATA_B[1];

2'b10: B=DATA_B[2];

2'b11: B=DATA_B[3];

default:B=1'bx;

endcase

end

assign AMUX=AX? A:B;

以上是没有经过优化的代码,代码可以优化为:

always@(*)

case ({AX,SELB[1:0]})

3'b000: AMUX=DATA_A[0];

3'b001: AMUX=DATA_A[1];

3'b010: AMUX=DATA_A[2];

3b011: AMUX=DATA_A[3];

3b100: AMUX=DATA_B[0];

3b101: AMUX=DATA_B[1];

3b110: AMUX=DATA_B[2];

3b111: AMUX=DATA_B[3];

default: AMUX=1'bx;

endcase

以LUTA和LUTB组从的8:1复选器为例经过D触发器的对应代码:

always@(posedge CLK)

case ({AX,SELB[1:0]})

3b000: AMUX <=DATA_A[0];

3b001: AMUX <= DATA_A[1];

3'b010: AMUX <= DATA_A[2];

3"b011: AMUX <=DATA_A[3];

3"b100: AMUX <=DATA_B[0];

3b101: AMUX<=DATA_B[1];

3b110: AMUX <=DATA_B[2];

3"b111: AMUX<=DATA_B[3];

default: AMUX<=1'bx;

endcase

相关推荐
北京太速科技股份有限公司9 小时前
太速科技-FMC144 -八路 250MSPS 14bit AD FMC子卡
fpga开发
不可思议迷宫1 天前
Verilog编程实现一个分秒计数器
单片机·嵌入式硬件·fpga开发
Terasic友晶科技1 天前
第3篇:Linux程序访问控制FPGA端LEDR<一>
fpga开发·嵌入式系统·de1-soc开发板
双料毒狼_s1 天前
【FPGA】状态机思想回顾流水灯
fpga开发
双料毒狼_s2 天前
【FPGA实战】基于DE2-115实现数字秒表
fpga开发
Cynthia的梦2 天前
FPGA学习-基于 DE2-115 板的 Verilog 分秒计数器设计与按键功能实现
fpga开发
9527华安2 天前
Xilinx系列FPGA实现HDMI2.1视频收发,支持8K@60Hz分辨率,提供2套工程源码和技术支持
fpga开发·音视频·8k·hdmi2.1
大熊Superman2 天前
FPGA实现LED流水灯
fpga开发
泪水打湿三角裤2 天前
fpga:分秒计时器
fpga开发
奋斗的牛马2 天前
FPGA_AXI仿真回环(一)
fpga开发