电路排队设计的Verilog程序

电路排队设计的Verilog程序,第1张

module traffic(clk,urgency,east_west,south_north,led);

input clk;

input urgency;

output [7:0]east_west,south_north;

output [5:0]led;

reg [7:0]east_west,south_north;

reg [5:0]led;

initial begin

east_west<=8'b0;

south_north<=8'b0;

led<=6'b100001;end

always @(posedge clk)

begin if(urgency==1) led<=6'b100100;

else if(east_west==8'b0 && south_north==8'b0) begin

east_west<=8'b00101101;

south_north<=8'b00101000;

led<=6'b100001;end

else if(east_west==8'b00000110 && south_north==8'b1) begin

east_west<=8'b00000101;

south_north<=8'b00000101;

led<=6'b100010; end

else if(east_west==8'b1 && south_north==8'b1 && led[5]==1'b1) begin

east_west<=8'b00101000;

south_north<=8'b00101101;

led<=6'b001100; end

else if(east_west==8'b1 && south_north==8'b00000110) begin

east_west<=8'b00000101;

south_north<=8'b00000101;

led<=6'b010100;end

else if(east_west==8'b1 && south_north==8'b1 && led[2]==1'b1) begin

east_west<=8'b00101101;

south_north<=8'b00101000;

led<=6'b100001; end

else if(east_west[3:0]==4'b0000) begin

east_west<=east_west-8'b111;

south_north<=south_north-1'b1; end

else if(south_north[3:0]==4'b0000) begin

east_west<=east_west-1'b1;

south_north<=south_north-8'b111; end

else begin

east_west<=east_west-1'b1;

south_north<=south_north-1'b1;

end

end

endmodule

上面是我前一段时间写的交通灯控制器设计代码,相应的英文字母对应相应的信号

到达时间、间隔。排队系统中,到达模式用到达时间和间隔来描述,单服务台排队系统仿真报告GPSS语言程序一排队系统组成。排队系统亦称“排队服务系统”。由一个或多个并联、串联及混合相联的服务台组成、服务于多种需求不同的顾客或工作对象。

你参考模仿一下吧。

clear

clc

%

%初始化顾客源

%

%总仿真时间

Total_time = 10;

%队列最大长度

N = 10000000000;

%到达率与服务率

lambda = 10;

mu = 6;

%平均到达时间与平均服务时间

arr_mean = 1/lambda;

ser_mean = 1/mu;

arr_num = round(Total_timelambda2);

events = [];

%按负指数分布产生各顾客达到时间间隔

events(1,:) = exprnd(arr_mean,1,arr_num);

%各顾客的到达时刻等于时间间隔的累积和

events(1,:) = cumsum(events(1,:));

%按负指数分布产生各顾客服务时间

events(2,:) = exprnd(ser_mean,1,arr_num);

%计算仿真顾客个数,即到达时刻在仿真时间内的顾客数

len_sim = sum(events(1,:)<= Total_time);

%

%计算第 1个顾客的信息

%

%第 1个顾客进入系统后直接接受服务,无需等待

events(3,1) = 0;

%其离开时刻等于其到达时刻与服务时间之和

events(4,1) = events(1,1)+events(2,1);

%其肯定被系统接纳,此时系统内共有

%1个顾客,故标志位置1

events(5,1) = 1;

%其进入系统后,系统内已有成员序号为 1

member = [1];

for i = 2:arr_num

%如果第 i个顾客的到达时间超过了仿真时间,则跳出循环

if events(1,i)>Total_time

break;

else

number = sum(events(4,member) > events(1,i));

%如果系统已满,则系统拒绝第 i个顾客,其标志位置 0

if number >= N+1

events(5,i) = 0;

%如果系统为空,则第 i个顾客直接接受服务

else

if number == 0

%其等待时间为 0

20091516

%PROGRAMLANGUAGEPROGRAMLANGUAGE

events(3,i) = 0;

%其离开时刻等于到达时刻与服务时间之和

events(4,i) = events(1,i)+events(2,i);

%其标志位置 1

events(5,i) = 1;

member = [member,i];

%如果系统有顾客正在接受服务,且系统等待队列未满,则 第 i个顾客进入系统

else len_mem = length(member);

%其等待时间等于队列中前一个顾客的离开时刻减去其到 达时刻

events(3,i)=events(4,member(len_mem))-events(1,i);

%其离开时刻等于队列中前一个顾客的离开时刻加上其服

%务时间

events(4,i)=events(4,member(len_mem))+events(2,i);

%标识位表示其进入系统后,系统内共有的顾客数

events(5,i) = number+1;

member = [member,i];

end

end

end

end

%仿真结束时,进入系统的总顾客数

len_mem = length(member);

%

%输出结果

%

%绘制在仿真时间内,进入系统的所有顾客的到达时刻和离

%开时刻曲线图(stairs:绘制二维阶梯图)

stairs([0 events(1,member)],0:len_mem);

hold on;

stairs([0 events(4,member)],0:len_mem,'-r');

legend('到达时间 ','离开时间 ');

hold off;

grid on;

%绘制在仿真时间内,进入系统的所有顾客的停留时间和等

%待时间曲线图(plot:绘制二维线性图)

figure;

plot(1:len_mem,events(3,member),'r-',1: len_mem,events(2,member)+events(3,member),'k-');

legend('等待时间 ','停留时间 ');

grid on;

以上就是关于电路排队设计的Verilog程序全部的内容,包括:电路排队设计的Verilog程序、排队系统中,到达模式一般用、matlab中排队论的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9644836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存