怎样用Verilog实现4选1数据选择器
module mux4_1(out,in0,in1,in2,in3,sel);
output out;
input in0,in1,in2,in3;
input[1:0] sel;
reg out;
always @(in0 or in1 or in2 or in3 or sel) //敏感信号列表
case(sel)
2'b00: out=in0;
2'b01: out=in1;
2'b10: out=in2;
2'b11: out=in3;
default: out=2'bx;
endcase
endmodule
扩展资料:
注意事项
由于选择器使用条件触发的方法对应真值表进行匹配输出与输入,因此可以联想到在C程序设计中的条件语句“If”和“Case”两种。
Case语句下可能出现锁存器。注释case条件下的case语句块的某一行可以得到不完整的case语句下的2位四路选择器。由不完整case语句下的2位四路选择器可知:
由于case语句所有分支处于同一优先级,所以当条件不完整时,对于处理结果,它不取决于语句的先后顺序,只取决于待处理信号,而处理结果为与待处理信号相差1’b1的信号的处理结果,在这一条件下相当于与待处理信号相差1’b1的信号的处理结果得到了锁存,锁存器因此产生。
对与锁存器而言,锁存器在待处理信号存在Glitch的情况下,可能会对Glitch产生锁存,从而导致锁存出现严重错误,是目标信号处理结果与预期目的产生极大的偏差,因此锁存器存在不稳定因素,所以在使用锁存器时,要牢记优先消除待处理信号的Glitch。
绛旓細module mux4_1(out,in0,in1,in2,in3,sel);output out;input in0,in1,in2,in3;input[1:0] sel;reg out;always @(in0 or in1 or in2 or in3 or sel) //鏁忔劅淇″彿鍒楄〃 case(sel)2'b00: out=in0;2'b01: out=in1;2'b10: out=in2;2'b11: out=in3;default: out=2'bx...
绛旓細input [1:0] sel;output [4:0] out;input en;reg [3:0] output;wire [1:0] sel;always begin case (sel)2'b00: output = in0;2'b01: output = in1;2'b10: output = in2;2'b11: output = in3;endcase end assign out[3:0] = en ? output : 4'bxxxx;endmodule ...
绛旓細module Orion_mux4_1(input [3:0] a , input [1:0] sel , output reg y);always @ (a , sel)begin case (sel)2'b00 : y = a[0];2'b01 : y = a[1];2'b10 : y = a[2];2'b11 : y = a[3];default: y = 1'bx;endcase end endmodule 鐩稿簲娴嬫祴璇曚唬鐮侊細`timescal...
绛旓細鐢5涓 4閫1 缁勬垚灏卞彲浠ヤ簡 module mux16( input [15:0] din, input [3:0] sel, output dout); wire y0,y1,y2,y3; mux4 mux4_0( .a(din[0]), .b(din[1]), .c(din[2]), .d(din[3]), .sel(sel[1:0]), .y(y0) ); mux4 ...
绛旓細module sel4(a,b,c,d,y,sel);input a,b,c,d;input [1:0]sel;output y;always@(a or b or c or d or sel)case(sel)0: y<=a;1:y<=b;2:y<=c;3:y<=d;endcase endmodule 鍏ㄦ墜鎵撶殑锛屾湜閲囩撼
绛旓細1锛塱nput [1:0] sel灏辨槸璇磋緭鍏ヤ俊鍙穝el鏄2浣嶇殑鎰忔濓紝鍒嗗埆鏄痵el[1], sel[0]2锛2'b00灏辨槸琛ㄧず2涓簩杩涘埗浣嶏紝1鈥榖0灏辨槸涓涓簩杩涘埗浣嶃俠琛ㄧずbinary浜岃繘鍒讹紝鍓嶉潰鐨勬暟瀛椾唬琛ㄤ綅鏁 3锛夎〃绀洪粯璁2浣嶇殑杈撳嚭鍊间负楂橀樆鎬併傚叿浣撳埌楂橀樆鎬侊紝鏄竴涓父瑙佺殑杈撳嚭鐘舵侊紝浣犲彲浠ョ悊瑙d负楂橈紝涓嶈繃鐪熸搴旂敤鐨勬椂鍊欒繕鏄...
绛旓細寤烘ā闂锛屼綘鐨勬ā鍨嬫槸锛圫1锛孲0锛00閫夋嫨D0锛01閫夋嫨D2锛10閫夋嫨D1锛 11閫夋嫨D3銆傜數璺湅鍥 杩樻湁璇翠竴鐐规垜鐨勬剰瑙侊紙鍙互鏃犺锛夊鏁板瓧璁捐涓嶈鐢ㄩ棬绾у缓妯★紒锛侊紒姣棤鎰忎箟锛侊紒鍒窡鎴戞彁鑰冭瘯锛侊紒verilog鍏ラ棬鎺ㄨ崘浣犵湅銆妚erilog HDL楂樼骇鏁板瓧璁捐銆
绛旓細鑰屾洿涓哄鏉鐨4閫1鏁版嵁閫夋嫨鍣紝灏遍渶瑕佷袱涓夋嫨杈撳叆锛屽畠浠氳繃宸у鐨勯昏緫璁捐锛岃兘澶熺伒娲诲湴閫夋嫨鍥涓暟鎹簮涓殑浠讳綍涓涓傛暟鎹夋嫨鍣ㄧ殑榄斿姏骞朵笉姝簬姝わ紝瀹冧滑鏄疐PGA涓昏緫鍗曞厓锛圠UT锛変笉鍙垨缂虹殑缁勪欢銆備緥濡傦紝涓涓4閫1閫昏緫鍑芥暟琛ㄨ揪鍜屾煡鎵捐〃锛屾鏄氳繃鏁版嵁閫夋嫨鍣ㄧ殑绮剧‘閫夋嫨锛瀹炵幇浜嗛珮鏁堢殑鏁版嵁澶勭悊銆傚湪淇″彿浼犺緭...
绛旓細4鐗囧簲璇ュ仛涓嶄簡16閫1锛岄渶瑕5鐗囥傚叾涓紝4涓鍥涢変竴瀹炵幇16閫4锛屾渶鍚庝竴涓4閫1锛岃緭鍑恒備笅闈㈡槸涓涓4閫1鐨閫夋嫨鍣紝渚涘弬鑰冦16閫1鍙互浣跨敤5涓4閫1鎼捣鏉ャ//=== //sel_16_1 module sel_16_1(a,b,c,d,c0_0,c0_1,c0_2,c0_3,c1_0,c1_1,c1_2,c1_3,c2_0,c2_1,c2_2,c2_3,c3_...
绛旓細module Maximum_value_detection锛坆aimostlarge,a,b,c,d锛夛紱output[3:0]Mostlarge锛沬nput[3:0] a b,c,d锛泈ire[3:0]sum1,sum2,sum3锛沘ssign sum1=(a锛瀌aob)?a:b;assign sum2=(c锛瀌)?c:d;assign Mostlarge=(sum1锛瀞um2)?sum1:sum2;endmodule module 锛坈lk,rstn,n1,n2,n3,n4,...