firmware (is that what you call FPGA 码?).
我也不知道 '是别人为它写的,但是即使没有人把设备变成完全不同的东西,我'我敢肯定我也可以用它学习FPGA编码。
叫做
比特流 . FPGA与微控制器(MCU)/微处理器(CPU)之间的根本区别在于,在FPGA中,加载原理图,而在MCU中,加载程序。
您可以将FPGA视为一堆未连接的逻辑门和触发器,
比特流 实际上,连接是一长串的,它告诉FPGA从该NAND门将此引脚连接到该D型触发器的该引脚,依此类推。 一旦所有互连都按照
比特流 ,'这样,原理图就会被加载,FPGA就会坐在那里,对输入信号做出反应。
FPGA不会像MCU一样按指令执行程序指令,FPGA只是对输入数据做出反应(请不要在此处提一下在FPGA内部具有CPU内核的可能性,这暂时无关紧要,仅会造成混乱)。
FPGA中没有执行顺序,只要它们加电,所有的门和触发器都在执行其任务。 相反,MCU按顺序执行指令,从根本上说是一个接一个地执行。 MCU是串行机,而FPGA是并行机(请不要'nitpick此处有关现代CPU中的多核处理器或SIMD指令)。
我的观点是,FPGA和MCU都使用ASCII文本文件作为源
-FPGA文本"code" describes a
原理图 图,工具链将该原理图转换为
比特流 ,这是在FPGA内部永久进行的电气互连的列表
-MCU / CPU文本源"code" describes an
算法 ,然后转换为机器码,有时也称为固件,它是MCU / CPU要执行的指令的逐步列表(同样,'鸟瞰,请不要'请在此处了解有关解释器或即时编译器与已编译代码不同的信息,等等)
MCU: text program -> firmware ->MCU逐步执行机器代码
FPGA: text 原理图 -> 比特流 ->FPGA固定原理图,始终以无特定顺序响应输入
回到话题上,声卡可以满足基本交流电路学习的需求,而无需购买示波器或信号发生器。 有一些程序可以根据需要将声卡变成示波器,信号发生器,频谱分析仪或交流电压表。 有许多免费工具可以执行所有操作,例如以下一项:
//www.zeitnitz.eu/scope_en在实际学习或实验物理组件的过程中,无焊面包板非常方便。
即使您宁愿尝试实验而不是模拟,您仍然需要不时地模拟电路或想法,而为此的最佳工具将是LTspice,它也是免费的。
同样,Python或LabVIEW(LabVIEW现在免费供家庭使用)或几乎任何其他语言都可以控制声卡并绘制图表,图表等。
对于该语言,最好的选择之一是Python,这可能是有史以来生产效率最高的编程语言(我将它与Spyder一起用作IDE)。 既然我们在谈论声卡和绘图,这是一个读取wav文件,然后绘制波形和频谱图的示例,所有这些都在不到10行的范围内:
#!/usr/bin/env python3
from scipy.io import wavfile
rate, x = wavfile.read('test_mono.wav')
from matplotlib import pyplot as plt
fig, (ax1) = plt.subplots(1, 1)
ax1.plot(x); ax1.set_title('Raw audio signal')
fig, (ax2) = plt.subplots(1, 1)
ax2.specgram(x[:, 0]); ax2.set_title('Spectrogram');
# avoid subplot (title) overlaping
plt.tight_layout()
或者,也许您是Linux用户,并且更喜欢将一些字节传送到aplay中以使

(对双关语很抱歉)直接从命令行生成信号发生器:
.LOG
00:15 2020.01.12
================
Created proj "P079 - Sound with aplayer C and Makefile" after founding an example of a 1 kHz audio generator
[url]//www.villagehousevacs.com/forum/testgear/question-cheap-pure-sine-wave-genertor-1khz/msg2866736/#msg2866736[/url]
Contentents of Makefile:
------------------------
all : sin
./sin | aplay -r 48000 -c 2 -f S16_BE
sin : sin.c
gcc -o sin sin.c -Wall -pedantic -O4 -lm
Contentents of sin.c:
---------------------
#include <stdio.h>
#include <stdint.h>
#include <math.h>
int main(int argc, char *argv[]) {
int i = 0;
while(1) {
double angle = i * 2 *M_PI / 48.0;
double s = sin(angle);
uint32_t u_sample = (s+1.0) * 16384;
int32_t i_sample = u_sample - 16384;
putchar((i_sample>>8) & 0xFF);
putchar((i_sample>>0) & 0xFF);
putchar((i_sample>>8) & 0xFF);
putchar((i_sample>>0) & 0xFF);
i = (i == 47 ? 0 : i+1) ;
}
}
00:35 2020.01.12
================
sin.c and Makefile example files in folder:
'__Pnnn/P079 - Sound with aplayer C and Makefile/Software/'
cd '__Pnnn/P079 - Sound with aplayer C and Makefile/Software/'
make
It works!
:o)