我是靠谱客的博主 缥缈发夹,最近开发中收集的这篇文章主要介绍FPGA初学者__个人学习笔记(三)_选择器、多路复用器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简介

在学习FPGA时,整理的一些问题,慢慢积累,期待自己的进步。
个人邮箱: 1149025224@qq.com
欢迎交流!

2 选 1 选择器

先说什么是选择器?
好几个女同学向你求婚,你选其中一个当老婆。即多输入单输出。

好,做个题
这个模块有输入: a, b, sel,输出: out
sel 信号作为选择信号,当 sel = 1 时选择 b,sel=0 时选择 a。

```py
module top_module( 
    input a, b, sel,
    output out );
    
    assign out = (sel) ? b : a;
    
endmodule

256选1, 位宽 1

什么是位宽?
暂可以理解为一根线有一个电压,可代表1或0,
那么四根线可以有四个电压,可代表0000、0001…直到1110、1111,
那么输入信号是一根线,代表的是一位,位宽就是1,四根线就可以代表四位,位宽为4。

以上如果想深究可以百度一下啦

实现一个 256 选 1 选择器,sel 信号作为选择信号,当 sel = 0 时选择 in[0],sel = 1 时选择 in[1],以此类推。

module top_module (
	input [255:0] in,
	input [7:0] sel,
	output  out
);
	assign out = in[sel];
	
endmodule

9 选 1 选择器,位宽 4

sel 信号作为选择信号,当 sel = 0 时选择 a,sel = 1 时选择 b,以此类推。sel 信号位宽为 4bit,当 sel 大于 8 时,输出 16’hffff。

module top_module( 
    input [15:0] a, b, c, d, e, f, g, h, i,
    input [3:0] sel,
    output reg [15:0] out );
    always @(*)begin
        case(sel)
            4'd0:out = a;
            4'd1:out = b;
            4'd2:out = c;
            4'd3:out = d;
            4'd4:out = e;
            4'd5:out = f;
            4'd6:out = g;
            4'd7:out = h;
            4'd8:out = i;
            default:out=16'hffff;
        endcase
    end
endmodule

256 选 1 选择器,位宽 4

el 信号作为选择信号,当 sel = 0 时选择 in[3:0],sel = 1 时选择 in[7:4],以此类推。

module top_module (
	input [1023:0] in,
	input [7:0] sel,
	output [3:0] out
);

	// We can't part-select multiple bits without an error, but we can select one bit at a time,
	// four times, then concatenate them together.
	assign out = {in[sel*4+3], in[sel*4+2], in[sel*4+1], in[sel*4+0]};

	// Alternatively, "indexed vector part select" works better, but has an unfamiliar syntax:
	// assign out = in[sel*4 +: 4];		// Select starting at index "sel*4", then select a total width of 4 bits with increasing (+:) index number.
	// assign out = in[sel*4+3 -: 4];	// Select starting at index "sel*4+3", then select a total width of 4 bits with decreasing (-:) index number.
	// Note: The width (4 in this case) must be constant.

endmodule

学习总结

位宽较小时使用 assign 语句,三元表达式,case 语句;
位宽较宽时的多路选择器,需要根据需求灵活地使用位选择符 [ ] 或者位连接符{ }

最后

以上就是缥缈发夹为你收集整理的FPGA初学者__个人学习笔记(三)_选择器、多路复用器的全部内容,希望文章能够帮你解决FPGA初学者__个人学习笔记(三)_选择器、多路复用器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部