?? medical.v
字號(hào):
//1. 主機(jī)有LED顯示:主機(jī)采用顯示屏,可顯示護(hù)理級(jí)別,系統(tǒng)狀態(tài)。主機(jī)面板有16/8個(gè)雙色LED指示燈,可顯示每個(gè)分機(jī)的工作狀態(tài)。
//2. 不間斷呼叫:主機(jī)可顯示多路分機(jī)的呼叫,并記憶保持。
//3. 二級(jí)護(hù)理:可在主機(jī)上設(shè)計(jì)護(hù)理級(jí)別,有高級(jí)和普通二種護(hù)理級(jí)別。
//4. 并機(jī)功能:主機(jī)有并功能,同一臺(tái)主機(jī)可并多臺(tái)主機(jī),實(shí)現(xiàn)多極管理。
//5. 各分機(jī)與門燈連接。
//系統(tǒng)包括LED顯示屏電路模板,路選分機(jī)開(kāi)關(guān),路選分機(jī)指示燈等。
// 接好線再檢查確保無(wú)誤后,打開(kāi)主機(jī)電源,主機(jī)自動(dòng)進(jìn)入對(duì)分機(jī)的檢查狀態(tài),主機(jī)從1號(hào)機(jī)開(kāi)始檢
//測(cè):分機(jī)正常顯示等閃亮一下,如某路分機(jī)有故障或該路未接分機(jī),則相應(yīng)的路選指示燈亮綠色保持,
//對(duì)全部的16/8路分機(jī)檢測(cè),檢測(cè)完畢后,保持亮綠色的指示燈5秒再熄滅。檢測(cè)完畢,主機(jī)自動(dòng)回
//到待機(jī)狀態(tài)。
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
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -