FPGA实验报告 Verilog HDL:7人表决器 巴克码信号发生器 FPGA数字时钟


写在前面:本文提供以下三个任务的思路讲解和代码实现, 如需参考引脚配置说明,可以点击下方链接跳转查看完整实验报告;本实验使用的是Altera公司的cycloneⅢ类型的芯片。
Verilog HDL实现:7人表决器 信号发生器 多功能数字时钟

7人表决器

  • 实验目标:实现7人投票表决电路,支持人数≥4则表决通过,否则表决不通过。
  • 电路思路:①输入7路并行信号[6:0] vote表示7个人,用开关控件控制。开关开启表示支持,输入一个电平信号,否则为零电平。②用条件判断语句对7路信号依次进行判断,给定一个中间信号[2:0] sum,如果判断为1(高电平)则sum加1,最终sum如果大于等于4,输出高电平。输出pass信号连接led灯。
  • 实验代码:
module vote_7(pass,vote,sum);
output pass;
output sum;
input [6:0] vote;
reg [2:0] sum;
reg i;
reg pass;
always @(vote)
begin
sum = 0;
for(i = 0; i<=6; i=i+1)
	begin
		if(vote[i])sum=sum+1;
		if(sum[2])pass=1;
		else pass=0;
		end
end
endmodule
  • 测试文件:
`timescale 1ns/100ps
module vote_7_tb;
output pass;
reg [6:0] vote;
wire [2:0] sum;
reg i;
wire pass;
vote_7 t(pass,vote,sum);
initial
begin
vote = 7'b0000000;
#10 vote = 7'b0000010;
#10 vote = 7'b0001100;
#10 vote = 7'b0011100;
#10 vote = 7'b0010111;
#10 vote = 7'b0100000;
#10 vote = 7'b0110000;
#10 vote = 7'b0111100;
#10 vote = 7'b0010100;
#10 vote = 7'b0110101;
#10 $stop;
end
endmodule
  • 实验注意点:本实验思路相对简单,但是也要注意一个地方,就是中间信号[2:0] sum是以二进制的形式存储,所以不是用[2:0] sum≥4判断的,而是用最高位是否为高电平作为依据,最高位sum[2]=1表示已有4人支持,输出1通过。这一点要注意,我们在设计代码时要时刻保持用二进制的视角思考问题。

巴克码信号发生器

  • 实验目标:用Verilog HDL设计一个序列信号发生器,要求能自动产生周期性的1110010序列。
  • 电路思路:时钟信号clk作为输入,当时钟处于上升沿时,信号显示端依次变化并产生巴克码的各个位数,最终产生1110010的序列。
  • 实验代码:
module bkm(clk,rst,dout);
input clk,rst;
output dout;
reg dout;
reg [2:0] state;
parameter s6 = 3'b110, s5 = 3'b101, s4 = 3'b100, s3 = 3'b011, s2 = 3'b010, s1 = 3'b001, s0 = 3'b000;
always @(posedge clk or negedge rst)
begin
	if(!rst)
		begin state <= s6; dout<= 1; end
	else
		begin
			case
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值