FPGA在校学习记录系列---实验3八选一数据选择器(Verilog HDL)

此系列记录FPGA在学校的学习过程。

FPGA系列
需要用到的软硬件:
软件:Quartus II 15.0 (64-bit)
在这里插入图片描述
硬件:
5CEBA4F23C7芯片

创建新的工程在上一个文章

链接:
FPGA在校学习记录系列—新建一个FPGA工程编写程序并仿真(Verilog HDL)
创建的工程名字为:mux8_1

实验3八选一数据选择器

打开好创建的工程

在.v文件中添加需要实现的代码

//mux8_1.v文件
module mux8_1 (in1, in2, in3, in4, in5, in6, in7, in8, sel, out);
input in1, in2, in3, in4, in5, in6, in7, in8;
input[2:0]sel;
output out;
reg out;
always@(sel or in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8)
begin
	case(sel)
	3'b000 : out = in1;
	3'b001 : out = in2;
	3'b010 : out = in3;
	3'b011 : out = in4;
	3'b100 : out = in5;
	3'b101 : out = in6;
	3'b110 : out = in7;
	3'b111 : out = in8;
	endcase
end
endmodule

根据上面的链接文章步骤生成.vt文件,并在启动项里添加初始值

//mux8_1.vt文件(写在启动里面)
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
sel = 3'b000;
in1 = 1;
in2 = 0;
in3 = 0;
in4 = 0;
in5 = 0;
in6 = 0;
in7 = 0;
in8 = 0;
#50
sel = 3'b001;
in1 = 0;
in2 = 1;
in3 = 0;
in4 = 0;
in5 = 0;
in6 = 0;
in7 = 0;
in8 = 0;
#50
sel = 3'b010;
in1 = 0;
in2 = 0;
in3 = 1;
in4 = 0;
in5 = 0;
in6 = 0;
in7 = 0;
in8 = 0;
#50
sel = 3'b011;
in1 = 0;
in2 = 0;
in3 = 0;
in4 = 1;
in5 = 0;
in6 = 0;
in7 = 0;
in8 = 0;
#50
sel = 3'b100;
in1 = 0;
in2 = 0;
in3 = 0;
in4 = 0;
in5 = 1;
in6 = 0;
in7 = 0;
in8 = 0;
#50
sel = 3'b101;
in1 = 0;
in2 = 0;
in3 = 0;
in4 = 0;
in5 = 0;
in6 = 1;
in7 = 0;
in8 = 0;
#50
sel = 3'b110;
in1 = 0;
in2 = 0;
in3 = 0;
in4 = 0;
in5 = 0;
in6 = 0;
in7 = 1;
in8 = 0;
#50
sel = 3'b111;
in1 = 0;
in2 = 0;
in3 = 0;
in4 = 0;
in5 = 0;
in6 = 0;
in7 = 0;
in8 = 1;
#50
                                                     
// --> end                           

对结果进行仿真

在这里插入图片描述

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文将介绍如何使用FPGAVerilog HDL编写乐曲演奏器件。我们将使用FPGA上的数字音频输出接口将Verilog HDL编写的音频信号输出到扬声器中,从而实现音乐的播放。 首先,我们需要确定使用的音乐文件。本例中,我们择了著名的“小星星”歌曲。该歌曲包含了七个音符,分别是C4、C4、G4、G4、A4、A4、G4。我们需要将这些音符转换为相应的频率,并将这些频率表示为Verilog HDL中的数字信号。 其次,我们需要编写Verilog HDL代码来生成这些音符的频率。我们可以使用时钟信号和计数器来生成周期性的方波信号,并使用这些方波信号来产生不同的频率。例如,我们可以使用一个计数器来产生50MHz的时钟信号,并使用另一个计数器来产生不同频率的方波信号。我们可以根据不同频率的方波信号来产生不同的音符。 最后,我们需要将产生的音频信号输出到扬声器中。我们可以使用FPGA上的数字音频输出接口来实现这一点。该接口将数字信号转换为模拟信号,并将其输出到扬声器中。 下面是一个简单的Verilog HDL代码示例,用于生成“小星星”歌曲的音频信号: ``` module music_player ( input clk, output wire speaker ); reg [23:0] counter; reg [2:0] note; always @(posedge clk) begin counter <= counter + 1; case (note) 3'b000: speaker <= (counter <= 238); // C4 3'b001: speaker <= (counter <= 212); // D4 3'b010: speaker <= (counter <= 189); // E4 3'b011: speaker <= (counter <= 178); // F4 3'b100: speaker <= (counter <= 159); // G4 3'b101: speaker <= (counter <= 142); // A4 3'b110: speaker <= (counter <= 126); // B4 3'b111: speaker <= (counter <= 119); // C5 endcase end always @(posedge clk) begin case (counter % 50000000) 0: note <= 3'b000; // C4 5000000: note <= 3'b000; // C4 10000000: note <= 3'b100; // G4 15000000: note <= 3'b100; // G4 20000000: note <= 3'b101; // A4 25000000: note <= 3'b101; // A4 30000000: note <= 3'b100; // G4 35000000: note <= 3'b100; // G4 40000000: note <= 3'b000; // C4 45000000: note <= 3'b000; // C4 default: note <= note; endcase end endmodule ``` 在这个示例中,我们使用了50MHz的时钟信号来产生不同的频率。我们使用一个计数器来产生时钟信号,并使用另一个计数器来产生不同频率的方波信号。我们使用一个case语句来择不同的音符,并将相应的方波信号输出到扬声器中。 这是一个简单的例子,用于说明如何使用FPGAVerilog HDL编写乐曲演奏器件。实际上,我们可以使用更复杂的算法来产生更复杂的音频信号,并使用更复杂的接口来输出到扬声器中。但是,这个例子足以让您了解如何使用FPGAVerilog HDL编写乐曲演奏器件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值