(数电实验报告)电子琴设计 Verilog

article/2025/3/21 0:44:29

实验名称 电子琴设计—任务1

1.设计思路
预置分频比

音名 分频系数(3Mhz)
中音 高音
1 11468 5736
2 10215 5111
3 9102 4552
4 8591 4289
5 7653 3827
6 6818 3409
7 6073 3037
理论频率对照表

音名 频率(Hz)
中音 高音
1 261.63 523.25
2 293.66 587.33
3 329.63 659.26
4 349.23 698.46
5 392.00 784.00
6 440.00 880.00
7 493.88 987.77

由“十二平均率”的规定,计算得到中音1到高音1每个音名名对应的频率如右表。以上12种频率的信号都可以由一个基准频率分频得到。由于分频系数不能为小数,故必须将分频系数取整(这必然会产生误差),所以基准频率大小的会影响误差的大小。基准频率过小,取整后的误差过大,所以基准频率应该要大。
但是过大的基准频率,导致分频系数也会很大。所以,综合考虑两方面的因素,我们选择6Mhz的基准频率(实验箱上的CLK0可以直接提供)。表中的分频比是由6Mhz二分频得到的3Mhz的基础上计算得到的。然后根据输入的不同,将预置的分频比送入分频器中,就可以得到对应频率的音符。
通过八段数码管显示高中音的音名(高音有小数点,中音没有,以此来区分)。
2.程序代码

//顶层文件
module lyj_3501_7(clk_in,clr,key,clk_out,clk_out_1,seg,codeout);//输入
input [13:0]key;//14个琴键输入
input clk_in;//时钟为6Mhz
input clr;//复位信号//输出
output reg clk_out;//分频器信号输出
output clk_out_1;//与clk_out一致
output [7:0] codeout;//八段数码管
output seg;//数码管位选选信号//内部变量
reg [13:0]divider;//分屏系数
reg [13:0]cnt;//计数器
reg flag;assign clk_out_1=clk_out;//与clk_out一致always@(posedge clk_in or posedge clr)
beginif(clr)//异步复位,高电平有效beginflag<=1;cnt<=0;endelse beginif(cnt<divider)begincnt<=cnt+1'b1;flag<=1'b0;endelsebeginflag<=1'b1;cnt<=1'b0;endend
endalways@(posedge flag)
begin//flag==1表示计数满,则波形反转if(clr)clk_out<=0;elsebeginif(key!=0)clk_out<=~clk_out;//得到50%占空比的方波信号elseclk_out<=1'd0;end
endalways@(key)
begincase(key)//根据不同的音符,预置分频比14'b0000_000_0000_000:divider<=0;14'b1000_000_0000_000:divider<=14'd11468;14'b0100_000_0000_000:divider<=14'd10215;14'b0010_000_0000_000:divider<=14'd9102;14'b0001_000_0000_000:divider<=14'd8591;14'b0000_100_0000_000:divider<=14'd7653;14'b0000_010_0000_000:divider<=14'd6818;14'b0000_001_0000_000:divider<=14'd6073;14'b0000_000_1000_000:divider<=14'd5736;14'b0000_000_0100_000:divider<=14'd5111;14'b0000_000_0010_000:divider<=14'd4552;14'b0000_000_0001_000:divider<=14'd4289;14'b0000_000_0000_100:divider<=14'd3827;14'b0000_000_0000_010:divider<=14'd3409;14'b0000_000_0000_001:divider<=14'd3037;default:divider<=0;endcase
endlyj_3501_6_b u1(key,codeout,seg);//显示模块
endmodulemodule lyj_3501_6_b(key,codeout,seg);//译码器模块
input [13:0] key;
output reg[7:0] codeout;
output seg;assign seg=1'b1;//数码管位选信号always@ (key)
begincase(key)14'b1000_000_0000_000:codeout=8'b0_0000110;//中音114'b0100_000_0000_000:codeout=8'b0_1011011;//中音214'b0010_000_0000_000:codeout=8'b0_1001111;//中音314'b0001_000_0000_000:codeout=8'b0_1100110;//中音414'b0000_100_0000_000:codeout=8'b0_1101101;//中音514'b0000_010_0000_000:codeout=8'b0_1111101;//中音614'b0000_001_0000_000:codeout=8'b0_0000111;//中音714'b0000_000_1000_000:codeout=8'b1_0000110;//高音114'b0000_000_0100_000:codeout=8'b1_1011011;//高音214'b0000_000_0010_000:codeout=8'b1_1001111;//高音314'b0000_000_0001_000:codeout=8'b1_1100110;//高音414'b0000_000_0000_100:codeout=8'b1_1101101;//高音514'b0000_000_0000_010:codeout=8'b1_1111101;//高音614'b0000_000_0000_001:codeout=8'b1_0000111;//高音714'b0000_000_0000_000:codeout=8'b1_1111111;//休止符default:codeout=8'b1_0111111;//0endcase
end
endmodule
//测试文件
`timescale 1ns / 1ns//时间单位/时间精度
module test_lyj_3501_6;
reg clk_in,clr;
reg [13:0]key;
wire seg;
wire [7:0]codeout;
wire clk_out_1,clk_out;
//
integer i;
//
lyj_3501_7 test_a(.clk_in(clk_in),.clr(clr),.key(key),.clk_out(clk_out),.clk_out_1(clk_out_1),.seg(seg),.codeout(codeout));
//
always #83 clk_in=~clk_in;//近似为6Mhz的时钟
//
initial 
begini=14;clk_in=1'b0;clr=1'b1;key=14'd0;#1000clr=1'b0;#1000press_13to0;
endtask press_13to0;//每个按键按至少3个周期的时间repeat(14)begini=i-1;key=14'd0; #1_000_000key[i]=1'b1;#12_000_000key=14'd0; end 
endtask endmodule  

3.仿真波形图
在这里插入图片描述

音名 中音 高音
仿真周期(ns) 仿真频率(hz) 误差 仿真周期(ns) 仿真频率(hz) 误差
1 3807708 262.6251 0.38% 1904684 525.0214 0.34%
2 3391712 294.8363 0.40% 1697184 589.2113 0.32%
3 3022196 330.8852 0.38% 1511596 661.5524 0.35%
4 2852544 350.5642 0.38% 1424280 702.1091 0.52%
5 2541128 393.5260 0.39% 1270896 786.8464 0.36%
6 2263908 441.7140 0.39% 1132120 883.2985 0.37%
7 2016568 495.8920 0.41% 1008616 991.4576 0.37%
误差在允许范围内

二、引脚分配表(电路中的信号名称->主板器件名称->引脚号PIN)
信号名 主板器件 PIN 信号名 主板器件 PIN
key[13] Key13 PIN_7 codeout[0] a PIN_112
key[12] Key12 PIN_8 codeout[1] b PIN_100
key[11] Key11 PIN_144 codeout[2] c PIN_104
key[10] Key10 PIN_6 codeout[3] d PIN_111
key[9] Key9 PIN_13 codeout[4] e PIN_106
key[8] Key8 PIN_43 codeout[5] f PIN_110
key[7] Key7 PIN_44 codeout[6] g PIN_103
key[6] Key6 PIN_39 codeout[7] h PIN_105
key[5] Key5 PIN_42 seg SEG0 PIN_119
key[4] Key4 PIN_32 clk_out 扬声器 PIN_128
key[3] Key3 PIN_33 clk_out_1 LED0/IO0 PIN_46
key[2] Key2 PIN_30
key[1] Key1 PIN_31
key[0] Key0 PIN_24
clk_in Clk0 PIN_88
clr Key17 PIN_137

参考资料:
王金明,徐志军,苏勇.《EDA技术与Verilog HDL设计》[M]:电子工业出版社,2013


http://chatgpt.dhexx.cn/article/9gKJEOUB.shtml

相关文章

数电实验六:利用MSI设计组合逻辑电路

转载自https://wu-kan.cn/_posts/2018-08-27-利用MSI设计组合逻辑电路/ 数字电子技术实验报告 实验题目&#xff1a;利用MSI设计组合逻辑电路 预习报告 内容一&#xff1a;74LS138相关 逻辑真值表 | S 2 S_2 S2​| S 1 S_1 S1​| S 0 S_0 S0​| Y 0 Y_0 Y0​| Y 1 Y_1 Y1​…

数电实验4:彩灯控制器设计

数电实验4&#xff1a;彩灯控制器设计 一、实验目的二、实验内容三、预习要求四、实验报告要求五、Verilog代码、RTL视图及仿真波形1.Verilog代码2.RTL视图3.仿真波形 西南交大数电实验————《数字电路与计算机组成原理》 一、实验目的 巩固组合逻辑电路设计、仿真方法.学…

数电实验四 - 四个数码管同时独立显示(触发器)

一、 实验目的 1. 通过实验观察&#xff0c;发现 Basys3 的四个七段数码管中的各个发光二极管码段的性能对实验方案的约束。 2. 利用实验一中的经验&#xff0c;判断刷新周期&#xff08;四个数码管循环点亮一次的时间叫做刷新周期&#xff09;取值下限。 3. 学会使用触发…

数电第一次实验

新建一个元件&#xff0c;首先要确定是元件模式&#xff0c;点击。 然后点击下方红色框的P 然后会弹出一个弹窗&#xff1a; 然后选择点击如下&#xff1a; 然后单击右下方确定。鼠标会变成一个铅笔&#xff0c;左键单击一次&#xff0c;会出现&#xff1a; 在自己需要的地方&a…

【数电实验】组合逻辑电路

实验二 组合逻辑电路 一 实验目的 1 掌握组合逻辑电路的设计方法&#xff1b; 2 学习译码显示电路的应用。 二 实验内容 1 设计发电机控制电路 &#xff08;1&#xff09;逻辑抽象真值表 将3个车间设为A、B、C&#xff0c;2个发电机设为M、N。由题目可知车间开工数和启动…

数电实验一 - 初识Multisim和Basys3

一、实验目的 1. 安装 Multisim 软件及其与 Basys 3 连接的软件 2. 学会在 Multisim 中进行数字电路仿真 3. 验证逻辑门电路的逻辑功能 4. 学会将电路下载到 Basys 3 硬件中查看运行结果。 二、实验仪器设备 软件&#xff1a;Multisim 14.1 Education Edition 软件&am…

数电实验二-点亮一个数码管(Multisim和Basys3 )

前些天发现了一个巨牛的人工智能学习电子书&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;无广告&#xff0c;忍不住分享一下给大家。&#xff08;点击查看学习资料&#xff09; 特别说明&#xff1a;该系列内容均是本人实验记录&#xff0c;无盗取侵权之嫌&#xff0…

数字电路EDA开发设计实验箱QY-JXSY01B

一、QY-JXSY01B数字电路EDA开发设计实验箱简介 1、电源:交流输入:220V10% 、50Hz;直流输出:12V/0.3A 、 5V/2A 2、手动单脉冲电路2组:每组可同时输出正负两个脉冲,脉冲幅值为TTL电平。 3、固定频率脉冲源7路,输出均为TTL电平:1Hz、10Hz、100Hz、1KHz、10KHz、100KHz、1…

数电实验:密码保险箱

1.设计理念 通过拨动开关输入由四位二进制表示的密码&#xff0c;然后按键确认输入并校验。 如果校验通过&#xff0c;则led不亮&#xff0c;数码led显示0提示开锁。 如果校验失败&#xff0c;则数码led不亮&#xff0c;led全亮&#xff0c;启动报警&#xff0c;直到输入正确密…

数电模电EDA系统实验箱QY-JXSY11

一、装置简介 QY-JXSY11数电模电EDA综合实验系统实验箱采用主板和各模块分离的设计,可编程器件焊接在独立模块上。通过选择模块来达到使用不同的可编程器件,适应不同的教学需要,系统功能和规模扩展方便。实验装置主板上各部分功能模块(功能模块和实验小工具)相互独立的,可…

数电实验箱的入门介绍

数电实验箱介绍 数电实验箱介绍 数码管芯片组LED显示器高低电平输出端模拟开关脉冲输出点阵 本人在刚刚接触实验箱时一脸懵逼&#xff0c;到快最后结束的时候已经可以帮其他人一节课内做完一个学期的有关实验箱的实验了。学期中遇到了一个被实验箱吓倒的师妹&#xff0c;在这…

数字电路实验箱QY-JXSY01C

一、QY-JXSY01C数字电路实验箱简介 1、实验板 (1)母板采用2mm厚印制线路板制成,正面印有连线、字符等,反面是相应的印刷线路及有关元器件等。 (2)母板上设有若干个高可靠的圆脚集成块插座(8P、14P、16P、20P、28P、及40P)及60多根高可靠的镀银长紫铜管,供插电阻、电容…

交换机的基本配置与管理

任务1. 认识Packet Tracer软件 Packet Tracher介绍 Packet Tracer是Cisco公司针对CCNA认证开发的一个用来设计、配置和故障排除网络的模拟软件。Packer Tracer模拟器软件比Boson功能强大&#xff0c;比Dynamips操作简单&#xff0c;非常适合网络设备初学者使用。 学习任务 …

1.思科交换机的基本配置练习题

题目链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1ck0_XHb208h7UY_HaVsJoA?pwdv8dn 提取码&#xff1a;v8dn 目录 交换机的基本配置——2.1.4.8 一、拓扑截图 二、实验内容 第 1 部分&#xff1a;基本连接、访问 CLI 和探索帮助功能 第 2 部分&#xff…

交换机与路由器技术-03-交换机基本配置

目录 一、进入设备的命令行界面 1.1 设备是否支持命令行 1.2 超级终端软件进行连接 二、思科设备命令行基础 2.1 四种模式的作用 2.2 模式之间的切换 三、常见配置 3.1 配置主机名 3.2 查看交换机MAC地址表 3.3 交换机的双工模式 3.4 查看接口信息 3.5 交换机的接口…

二、交换机的基本配置及管理

实验目标&#xff1a; 掌握交换机基本信息的配置管理 技术原理&#xff1a; 交换机管理方式基本分为两种&#xff1a; 1. 带内管理&#xff1a; 通过Telnet、拨号等方式属于带内管理 2. 带外管理&#xff1a; 通过交换机的Console端口管理交换机属于带外管理&#xff0c;这种管…

实验二:交换机基本配置

交换机基本配置 1、实验目的 &#xff08;1&#xff09;掌握使用交换机基本登陆方式 &#xff08;2&#xff09;掌握基本操作命令 2、实验内容 &#xff08;2&#xff09;&#xff08;超级终端&#xff09;控制台、Telnet、WEB方式访问交换机 &#xff08;3&#xff09;交…

117、 交换机的基本配置方法

(一)以太网交换机基础 以太网的最初形态就是在一段同轴电缆上连接多台计算机,所有计算机都共享这段电缆。所以每当某台计算机占有电缆时,其他计算机都只能等待。这种传统的共享以太网极大的受到计算机数量的影响。为了解决上述问题,我们可以做到的是减少冲突域中的主机数…

交换机的基本交换配置

交换机的基本交换配置 ​ 首先用随机带的反转配置线连接交换机的CONSOLE口和PC的串口&#xff0c;用超级终端登陆交换机。 1. 配置交换机的主机名。 设置方法和路由器基本相同。设置主机名为&#xff1a;1900A ​ Switch >enable //进入特权模式&#xff1b; ​ Switch&…

交换机基本配置及VLAN配置

【实验任务】 1. 了解实验室的配置和设备连接方法。 2. 熟练掌握交换机的登录、交换机命令行各种操作模式、区别以及模式之间的切换。 3. 了解、掌握交换机基本命令的操作。 4. 熟练掌握单交换机的VLAN配置。 5. 掌握多交换机的VLAN配置。 【实验须知】 1&#xff0e; 实…