目录
2021年的国赛从8月推迟到10月,到11月,这对于考研人来说是非常大的压力,几经考虑过放弃,但是我真的非常热爱这个比赛,我时常陷落于PCB那精致小巧的美,倾心于信号波形那优雅曲线的曼妙,着迷于逻辑世界的可思议迷宫,沉醉于最后做出作品的那份成就与喜悦。我投入了那么长时间,从单片机,到模拟电路,最后再到FPGA,我实在是不想放弃,而且我的队友都还没有放弃,我们都坚持到了最后,拿了国奖。

键入的数字用单一点频的组合表示,每个数字对应不同的频率组合,建立起一个数字-频率组合表,然后由DAC将这些组合信号输出,由合路电路(加法器)将数字对应的频率组合信号和模拟信号加在一起,经放大器,功率放大器,天线输出。接收端经带通滤波器,放大器,解调器解调后,用ADC采集解调后的信号。
采集后的数据分两条支路进行处理,其中一条支路是对信号进行FFT运算,得到发送端的信号幅度谱,然后把它和预设的数字-频率组合表进行对照,得出对应的发送数字,然后显示。
另一支路,对信号做数字滤波处理,将除了函数发生器给的模拟信号以外的信号滤掉,然后经过DAC,再经过模拟滤波器。最终将模拟信号还原出去。

使用的是AM调制,占用的信道带宽是基带信号的2倍,而信号频率范围是50Hz~10kHz,要求信号带宽为25kHz以内,则我们能够使用的频率范围是0-50Hz,和10k-12.5kHz。低频范围周期较长,难以满足题目要求的2s内完成显示,故选择高频范围。
接下来重点要做的是理清发送的具体时序。题目要求发四个数字,我们这里依次进行发送,发送第一个数字用时250ms,经过150ms的空白间隔后,再发送第二个,然后再间隔150ms,以此类推,不断循环发送这四个数字。 示意图如下:

编码,在10k-12.5kHz的范围内选择四个点频用来编码十进制数字,设计的原则是:
①每个数字用尽可能少的频率表示。
②选择的频率要方便接受端还原模拟信号时滤除。
③频率之间的间隔要足够接收端进行FFT运算后分辨出来。
综上考虑,我选择了f1=10.9k,f2=11.0k,f3=11.1k,f4=11.2k 这四个频率。(也可以用更高一点的频率和更大的频率间隔,会更好实现,我当初选了较低的频率是为了怕后续调制系统的不理想导致额外的带宽)编码方式如下图:
0代表没有,1代表有,N(Number)表示数字
| f1 | f2 | f3 | f4 | N |
|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 0 | 1 | 1 | 2 |
| 0 | 1 | 0 | 0 | 3 |
| 0 | 1 | 0 | 1 | 4 |
| 0 | 1 | 1 | 0 | 5 |
| 1 | 1 | 0 | 0 | 6 |
| 1 | 0 | 0 | 0 | 7 |
| 1 | 0 | 0 | 1 | 8 |
| 1 | 0 | 1 | 0 | 9 |

接收端带通滤波器使用LC无源滤波器,使用包络检波方法进行解调。解调后的信号放大到适合ADC采集的幅度范围内。ADC采集使用的采样率要大于最高频率的两倍,这里建议不要用过低的采样率,因为除了要进行FFT计算之外,还要进行数字滤波+还原信号,速率太低的话,经过DAC输出后,模拟滤波器难以恢复原来的时域信号。这里我采用102.5k的采样率。
采集后的数据分两个支路:


?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
目录一、inout在设计文件中的使用方法1.1、inout的第一种使用方法1.2、inout实现的第二种使用方法1.3、inout使用总结 二、inout在仿真测试中的使用方法一、inout在设计文件中的使用方法在FPGA的设计过程中,有时候会遇到双向信号(既能作为输出,也能作为输入的信号叫双向信号)。比如,IIC总线中的SDA信号就是一个双向信号,QSPIFlash的四线操作的时候四根信号线均为双向信号。在Verilog中用关键字inout定义双向信号,这里总结一下双向信号的处理方法。1.1、inout的第一种使用方法 实际上,双向信号的本质是由一个三态门组成的,三态门可以输出高电平,低电
目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式
我正在尝试下载一个大文件,然后使用Ruby将该文件发布到REST端点。该文件可能非常大,即超过可以存储在内存中甚至磁盘上的临时文件中的容量。我一直在用Net::HTTP尝试这个,但我愿意接受任何其他库(rest-client等)的解决方案,只要他们做我想做的事情。这是我尝试过的:require'net/http'source_uri=URI("https://example.org/very_large_file")source_request=Net::HTTP::Get.new(source_uri)source_http=Net::HTTP.start(source_uri.ho
我想从gtk3中的Widget发出自定义信号。在GTK2中,有一个名为signal_new的函数来创建一个新信号。您可以在此处查看示例:https://github.com/ruby-gnome2/ruby-gnome2/blob/ec373f87e672dbeeaa157f9148d18b34713bb90e/glib2/sample/type-register.rb在GTK3中,这个功能似乎不再可用。那么在ruby的GTK3中创建自定义信号的新方法是什么? 最佳答案 GTK3更改为使用define_signal方法而不是si
我想知道如何连接到带参数的信号(使用Rubyblock)。我知道如何连接到一个不带参数的:myCheckbox.connect(SIGNAL:clicked){doStuff}但是,这不起作用:myCheckbox.connect(SIGNAL:toggle){doStuff}它不起作用,因为切换槽采用参数voidQAbstractButton::toggled(boolchecked)。我怎样才能让它与参数一起工作?谢谢。 最佳答案 对您的问题的简短回答是,您必须使用slots方法声明要连接的插槽的方法签名:classMainGU
我在Heroku上构建了一个必须在Docker容器内运行的RoR应用程序。为此,我使用officialDockerfile.因为它在Heroku中很常见,所以我需要一些附加组件才能使这个应用程序完全运行。在生产中,变量DATABASE_URL在我的应用程序中可用。但是,如果我尝试其他一些使用环境变量(在我的例子中是Mailtrap)的加载项,变量不会在运行时复制到实例中。所以我的问题很简单:如何让docker实例在Heroku上执行时知道环境变量?您可能会问,我已经知道我们可以在docker-compose.yml中指定一个environment指令。我想避免这种情况,以便能够通过项目
我有在服务器上运行的代码,在服务器硬关闭之前,发送了一个信号SIGTERM让我的代码知道它需要清理。我想在发生这种情况时运行代码并将信号发送回同一个程序,以便任何其他需要清理的代码都可以这样做。我不想捕获信号或改变信号行为,我只需要在我的程序的其余部分解释SIGTERM之前运行一些东西。目前我可以做类似的事情Signal.trap('TERM')doputs"Gracefulshutdown"exitend但如果同一个应用中的多段代码试图做同样的事情,它就不起作用了。例如:Signal.trap('TERM')doputs"Gracefulshutdown"exitendSignal.
似乎Capistrano曾经有anextensivefiletransferpackage.但是在3.0版本重写后好像没有了。知道是否还有其他方法可以将文件传输到服务器/从服务器传输文件吗? 最佳答案 下载:desc"downloadfoobar.txtintolocal_dir/"task:foobardodownload!"some_remote_path/foobar.txt","local_dir/"end我知道这从Cap3.2.1开始有效,因为我现在正在使用它。 关于ruby-
我正在尝试将数据从我的生产数据库传输到我的登台数据库,但没有成功。我正在关注heroku的相关文档:http://devcenter.heroku.com/articles/pgbackups#transfers这些是我运行的命令...$herokuaddons:addpgbackups--remotestaging$herokuaddons:addpgbackups--remoteproduction$herokupgbackups:capture--remoteproduction$herokupgbackups:restoreDATABASE`herokupgbackups:ur