⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 medical.v

📁 利用FPGA来实现一个简单的医疗呼叫系统
💻 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 + -