📄 medical.v
字号:
//1. 主机有LED显示:主机采用显示屏,可显示护理级别,系统状态。主机面板有16/8个双色LED指示灯,可显示每个分机的工作状态。
//2. 不间断呼叫:主机可显示多路分机的呼叫,并记忆保持。
//3. 二级护理:可在主机上设计护理级别,有高级和普通二种护理级别。
//4. 并机功能:主机有并功能,同一台主机可并多台主机,实现多极管理。
//5. 各分机与门灯连接。
//系统包括LED显示屏电路模板,路选分机开关,路选分机指示灯等。
// 接好线再检查确保无误后,打开主机电源,主机自动进入对分机的检查状态,主机从1号机开始检
//测:分机正常显示等闪亮一下,如某路分机有故障或该路未接分机,则相应的路选指示灯亮绿色保持,
//对全部的16/8路分机检测,检测完毕后,保持亮绿色的指示灯5秒再熄灭。检测完毕,主机自动回
//到待机状态。
module medical(
clk, //40M
clk2, //1M
rst,
require,
err,
cnt,
cntt,
err_signal,
flag,
end_check,
red,
green
);
input clk;
input clk2;
input rst;
input[7:0]require;
input [7:0]err;
output[3:0]cnt;
output[7:0]cntt;
output[7:0]err_signal;
output[7:0]flag;
output end_check;
output[7:0]red;
output[7:0]green;
reg end_check;
//===================16 ge fenji=======================================================
fenji fenji_u0(
.clk (clk),
.rst (rst),
.in (err[0]),
.out (err_signal[0])
);
fenji fenji_u1(
.clk (clk),
.rst (rst),
.in (err[1]),
.out (err_signal[1])
);
fenji fenji_u2(
.clk (clk),
.rst (rst),
.in (err[2]),
.out (err_signal[2])
);
fenji fenji_u3(
.clk (clk),
.rst (rst),
.in (err[3]),
.out (err_signal[3])
);
fenji fenji_u4(
.clk (clk),
.rst (rst),
.in (err[4]),
.out (err_signal[4])
);
fenji fenji_u5(
.clk (clk),
.rst (rst),
.in (err[5]),
.out (err_signal[5])
);
fenji fenji_u6(
.clk (clk),
.rst (rst),
.in (err[6]),
.out (err_signal[6])
);
fenji fenji_u7(
.clk (clk),
.rst (rst),
.in (err[7]),
.out (err_signal[7])
);
//==========================================================
reg[3:0]cnt;
always @(posedge clk2 or negedge rst)
begin
if(!rst)
begin
cnt<=4'b0000;
end_check<=1'b0;
end
else begin
if(cnt==4'b1000)
begin
cnt<=4'b1001;
end_check<=1'b1;
end
else if(cnt<4'b1000)
begin
cnt<=cnt+1'b1;
end_check<=1'b0;
end
else if(cnt>4'b1000)
begin
cnt<=cnt;
end_check<=1'b1;
end
end
end
reg[7:0] en;
always @(posedge clk2 or negedge rst)
begin
if(!rst)
begin
en<=8'b0000_0000;
end
else begin
case(cnt)
4'b0000:en<=8'b0000_0001;
4'b0001:en<=8'b0000_0010;
4'b0010:en<=8'b0000_0100;
4'b0011:en<=8'b0000_1000;
4'b0100:en<=8'b0001_0000;
4'b0101:en<=8'b0010_0000;
4'b0110:en<=8'b0100_0000;
4'b0111:en<=8'b1000_0000;
default:en<=8'b1111_1111;
endcase
end
end
reg[7:0]cntt;
always @(posedge clk or negedge rst)
begin
if(!rst)
begin
cntt<=8'd0;
end
else begin
if(cntt==8'd40)
cntt<=8'd1;
else
cntt<=cntt+1'b1;
end
end
reg[7:0]flag;
always @(posedge clk or negedge rst)
begin
if(!rst)
begin
flag<=8'b0000_0000;
end
else begin
case(cnt)
4'b0001:begin
if(err_signal[0]==1'b1)
begin flag[0]<=1'b0;flag[7:1]<=flag[7:1];end//have no problem
else
begin flag[0]<=1'b1;flag[7:1]<=flag[7:1];end//have some problem
end
4'b0010:begin
if(err_signal[1]==1'b1)
begin flag[1]<=1'b0;flag[7:2]<=flag[7:2];end//have no problem
else
begin flag[1]<=1'b1;flag[7:2]<=flag[7:2];end//have some problem
end
4'b0011:begin
if(err_signal[2]==1'b1)
begin flag[2]<=1'b0;flag[7:3]<=flag[7:3];end//have no problem
else
begin flag[2]<=1'b1;flag[7:3]<=flag[7:3];end//have some problem
end
4'b0100:begin
if(err_signal[3]==1'b1)
begin flag[3]<=1'b0;flag[7:4]<=flag[7:4];end//have no problem
else
begin flag[3]<=1'b1;flag[7:4]<=flag[7:4];end//have some problem
end
4'b0101:begin
if(err_signal[4]==1'b1)
begin flag[4]<=1'b0;flag[7:5]<=flag[7:5];end//have no problem
else
begin flag[4]<=1'b1;flag[7:5]<=flag[7:5];end//have some problem
end
4'b0110:begin
if(err_signal[5]==1'b1)
begin flag[5]<=1'b0;flag[7:6]<=flag[7:6];end//have no problem
else
begin flag[5]<=1'b1;flag[7:6]<=flag[7:6];end//have some problem
end
4'b0111:begin
if(err_signal[6]==1'b1)
begin flag[6]<=1'b0;flag[7]<=flag[7];end//have no problem
else
begin flag[6]<=1'b1;flag[7]<=flag[7];end//have some problem
end
4'b1000:begin
if(err_signal[7]==1'b1)
begin flag[7]<=1'b0;end//have no problem
else
begin flag[7]<=1'b1;end//have some problem
end
default:flag<=flag;
endcase
end
end
//=====================================================================================
led led_u0(
.clk (clk),
.rst (rst),
.en (en[0]),
.end_check (end_check),
.require (require[0]),
.led_flag (flag[0]),
.led_red (red[0]),
.led_green (green[0])
);
led led_u1(
.clk (clk),
.rst (rst),
.en (en[1]),
.end_check (end_check),
.require (require[1]),
.led_flag (flag[1]),
.led_red (red[1]),
.led_green (green[1])
);
led led_u2(
.clk (clk),
.rst (rst),
.en (en[2]),
.end_check (end_check),
.require (require[2]),
.led_flag (flag[2]),
.led_red (red[2]),
.led_green (green[2])
);
led led_u3(
.clk (clk),
.rst (rst),
.en (en[3]),
.end_check (end_check),
.require (require[3]),
.led_flag (flag[3]),
.led_red (red[3]),
.led_green (green[3])
);
led led_u4(
.clk (clk),
.rst (rst),
.en (en[4]),
.end_check (end_check),
.require (require[4]),
.led_flag (flag[4]),
.led_red (red[4]),
.led_green (green[4])
);
led led_u5(
.clk (clk),
.rst (rst),
.en (en[5]),
.end_check (end_check),
.require (require[5]),
.led_flag (flag[5]),
.led_red (red[5]),
.led_green (green[5])
);
led led_u6(
.clk (clk),
.rst (rst),
.en (en[6]),
.end_check (end_check),
.require (require[6]),
.led_flag (flag[6]),
.led_red (red[6]),
.led_green (green[6])
);
led led_u7(
.clk (clk),
.rst (rst),
.en (en[7]),
.end_check (end_check),
.require (require[7]),
.led_flag (flag[7]),
.led_red (red[7]),
.led_green (green[7])
);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -