用verilog中的if 语句设计一个优先排队电路,其框图如下: 排队顺序: A=1 最高优先级 B=1 次高优先级 C= verilog的优先权排队电路

\u7528verilog\u4e2d\u7684if \u8bed\u53e5\u8bbe\u8ba1\u4e00\u4e2a\u4f18\u5148\u6392\u961f\u7535\u8def

module test(ia,ib,ic,oa,ob,oc);
input wire ia,ib,ic;
output reg oa,ob,oc;

always @(ia or ib or ic)
begin
if (ia==1 && ib==0 && ic==0) begin oa=1;ob=0;oc=0;end
else if (ia==0 && ib==1 && ic==0) begin oa=0;ob=1;oc=0;end
else if (ia==0 && ib==0 && ic==1) begin oa=0;ob=0;oc=1;end
end
endmodule

module Priority(a,b,c,rst,clk,oa,ob,oc);
input a,b,c;
input rst,clk;
output oa,ob,oc;
reg oa,ob,oc;
always @(posedge clk or posedge rst) begin
if(rst)
begin
oa<=0;ob<=0;oc<=0;
end
if(a)
begin
oa<=1;ob<=0;oc<=0;
end
else if(!a&b)
begin ob<=1;oa<=0;oc<=0;
end
else if(!a&!b&c)
begin
oc<=1;oa<=0;ob<=0;
end
else
begin
oa<=0;ob<=0;oc<=0;
end end
endmodule
\u4e0b\u9762\u662f\u529f\u80fd\u4eff\u771f\u6d4b\u8bd5\u6587\u4ef6
`timescale 1ns/1ns
module Priority_t();
reg a,b,c,rst,clk;
wire oa,ob,oc;
parameter step=100;

Priority u(a,b,c,rst,clk,oa,ob,oc);

always #(0.5*step) clk=~clk;

initial begin
rst=1;
#(step) rst=0;
end
initial begin
a=0;b=0;c=0;clk=0;
#(5*step) a=1;b=0;c=0;
#(5*step) a=0;b=1;c=0;
#(5*step) a=0;b=0;c=1;
#(5*step) a=1;b=1;c=0;
#(5*step) a=1;b=0;c=1;
#(5*step) a=0;b=1;c=0;
end
endmodule
\u6d4b\u8bd5\u6587\u4ef6\u4eff\u771f\u7ed3\u679c\u672c\u4eba\u5df2\u5b9e\u9645\u64cd\u4f5c\uff0c\u7ed3\u679c\u6b63\u786e

module SQE(
input [2:0] abc_in;
output reg [2:0] abc_out;
always @ *
begin
    if(abc_in>=3'b100)
        abc_out <= 3'b100;
    else if(abc_in<=3'b001)
        abc_out <= 3'b001;
        else
            abc_out <= 3'b010;
end
endmodule
仿真波形自己画,没那个工具


扩展阅读:免费的翻译器 ... 7人表决器verilog if语 ... verilog always ... python条件控制语句 ... verilog hdl ... verilog 逻辑符号 ... verilog if语句 ... verilog与非符号 ... 异步fifo verilog ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网