1、完成7人表决电路设计,LED灯表示通过、否决。 (1)开关表示赞成与否,1~7编号(1赞成,0不赞成); (2)LED显示表决的结果; (3)数码管分别显示赞成、否决的人数; (4)工作时钟100HZ即可。
2、所有程序设计代码包括设计代码、仿真代码和约束文件。
FPGA源程序如下:
- `timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer:
- //
- // Create Date: 2018/06/20 21:42:40
- // Design Name:
- // Module Name: vote_7
- // Project Name:
- // Target Devices:
- // Tool Versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module vote_7(
- input clk,
- input rst,
- input[6:0]vote, //7位按键开关
- output reg led, //小灯表示赞同or否决
- output out1, //数码管1输出
- output out2, //数码管2输出
- output reg [6:0]state1, //数码管1显示赞同人数的总和
- output reg [6:0]state2 //数码管2显示否决人数的总和
- );
-
- reg [2:0]sum; //计算赞同人数(开关)的总和
- always @(posedge clk)
- begin
- if(!rst)
- begin
- sum<=0; //初始化sum等于0
- end
- else
- sum<=vote[6]+vote[5]+vote[4]+vote[3]+vote[2]+vote[1]+vote[0]; //sum计人数(拨码开关)的数量,求人数(拨码开关)的总和
- end
- assign out1 = 1'b1; //给数码管的两个输出out1、out2使能
- assign out2 = 1'b1;
- //片选一个数码管显示否决人数,将sum显示的值显示到数码管1上,sum=0数码管显示0,sum=1数码管显示1,sum=2数码管显示2······
- always@(negedge rst,posedge clk)
- begin
- if(!rst)
- state1 <= 7'hff; //数码管1初始化
- else
- begin
- case(sum[2:0])
- 3'h0:state1 <= 7'b0111111;
- 3'h1:state1 <= 7'b0000110;
- 3'h2:state1 <= 7'b1011011;
- 3'h3:state1 <= 7'b1001111;
- 3'h4:state1 <= 7'b1100110;
- 3'h5:state1 <= 7'b1101101;
- 3'h6:state1 <= 7'b1111101;
- 3'h7:state1 <= 7'b0000111;
- default :
- state1 <= 7'b0111111;
- endcase
- end
- end
- //片选一个数码管显示否决人数,将sum显示的值显示到数码管2上,sum=0数码管显示7,sum=1数码管显示6,sum=2数码管显示5······
- always@(negedge rst,posedge clk)
- begin
- if(!rst)
- state2 <= 7'hff;
- else
- begin
- case(sum)
- 3'h0:state2 <= 7'b0000111;
- 3'h1:state2 <= 7'b1111101;
- 3'h2:state2 <= 7'b1101101;
- 3'h3:state2 <= 7'b1100110;
- 3'h4:state2 <= 7'b1001111;
- 3'h5:state2 <= 7'b1011011;
- 3'h6:state2 <= 7'b0000110;
- 3'h7:state2 <= 7'b0111111;
- default :
- state2 <= 7'h0000111;
- endcase
- end
- end
- //用小灯显示通过和不通过,小灯亮,则通过;小灯灭则不通过。当sum值大于3时led小灯亮,否则小灯灭
- always @(negedge rst,posedge clk)
- begin
- if(!rst)
- begin
- led<=0; //初始化小灯
- end
- else if(sum>=4)
- led<=1;
- else
- led<=0;
- end
- endmodule
复制代码
所有资料51hei提供下载:
vote_7.zip
(2.25 KB, 下载次数: 38)
|