?? 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 + -