写在前面:本文提供以下三个任务的思路讲解和代码实现, 如需参考引脚配置说明,可以点击下方链接跳转查看完整实验报告;本实验使用的是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
文章来源地址https://www.toymoban.com/news/detail-755255.html
文章来源:https://www.toymoban.com/news/detail-755255.html
到了这里,关于FPGA实验报告 Verilog HDL:7人表决器 巴克码信号发生器 FPGA数字时钟的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!