作者 主题:老狗,新花样-学习电子产品 (Read 1961 times)

0位成员和1位访客正在查看此主题。

 离线 rstofer

  • 超级贡献者
  • ***
  • 帖子:7956
  • 国家:  我们
回复:老狗,新花样-学习电子产品
« 在以下问题上回复#25: 2020年12月15日,上午12:48:47»
行消除和替换方法-在眼睛上容易得多:

//youtu.be/XOJgzW4P7T8
//youtu.be/YriMMWbndn0

« 上次编辑:2020年12月15日,上午12:50:35 by rstofer »
 

 离线 卡斯特尔

  • 定期贡献者
  • *
  • 职位:127
  • 国家:  我们
回复:老狗,新花样-学习电子产品
« 在以下回复#26: 2020年12月15日,上午01:50:45»
行消除和替换方法-在眼睛上容易得多:

//youtu.be/XOJgzW4P7T8
//youtu.be/YriMMWbndn0
我刚刚看了其中的第一个-非常有用(并且可以理解)-再次感谢。一世'有足够的余力让我在可预见的将来忙碌!
 

 离线 罗乔治

  • 超级贡献者
  • ***
  • 帖子:2751
  • 国家:  RO
回复:老狗,新花样-学习电子产品
« 在以下回复#27: 2020年12月15日,上午02:37:28»
固件(这就是您所说的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执行的指令的逐步列表(同样,'鸟瞰,请不要'请在此处了解有关解释器或即时编译器与已编译代码不同的信息,等等)

单片机:    text program -> firmware ->MCU逐步执行机器代码
FPGA:   text schematic -> bitstream ->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中以使   ; D (对双关语很抱歉)直接从命令行生成信号发生器:
代码: [选择]
.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)
« 最后编辑:2020年12月15日,上午03:13:23 by RoGeorge »
 
以下用户对此帖子表示感谢: xrunner

 离线 rstofer

  • 超级贡献者
  • ***
  • 帖子:7956
  • 国家:  我们
回复:老狗,新花样-学习电子产品
« 在以下回复#28: 2020年12月15日,上午03:46:15»
我不知道是什么 '是别人为它写的,但是即使没有人将设备变成完全不同的东西,我'可以肯定,我也可以学习它的FPGA编码。

您可以将ADALM 2000用作逻辑分析仪(在其功能范围内)以及数字IO(LED和开关)。 如果您使用FPGA-我最喜欢的玩具,则需要逻辑分析仪。

对于较新的Artix 7芯片(以及Vivado支持的其他芯片),Xilinx Vivado具有内部逻辑分析仪,因此无需任何操作。 关于外部逻辑分析仪的事情是,您需要很多通道,而32个通道'总是不够,这意味着您至少要绑32个引脚,具体取决于芯片,这可能会限制您可以设计和调试的引脚。

关于FPGA编程,要记住的是逻辑。 一个时钟沿可能改变一百万个触发器,这就是为什么您在芯片周围看到不计其数的去耦电容器的原因。 一切并行发生,这与典型代码完全不同。 将所有这些球保持在脑海中成为一项挑战。

在我看来,FPGA板应该有很多配件。 我想要LED,7段显示器,滑动开关和按钮。 我当然希望有机会单步执行时钟,并且可能要在LED上显示工作条件。 所以,目前我最喜欢的板子是Digilent的100T变体's Nexys A7 board

//store.digilentinc.com/nexys-a7-fpga-trainer-board-recommended-for-ece-curriculum/

Basys 3板是可能的,但是它使用的芯片要小得多,而我不会'如果没有逻辑,我可能会用完BlockRAM。 不过,我有一个...

//store.digilentinc.com/basys-3-artix-7-fpga-trainer-board-recommended-for-introductory-users/

如果您想弄乱FPGA,有一些不错的网站,但是我喜欢VHDLwhiz.com

//vhdlwhiz.com/free-resources/

我都完成了'for pay'课程只是因为我可以。 作者在模拟上花费了大量时间,而这个话题我一无所知。  Worth every penny!  At least to me...

有许多免费的教程,而且都是高质量的。  Highly recommended.

Nandland是另一个不错的选择-他们的教程有一个相对便宜的FPGA板...

//www.nandland.com/

可能 //www.fpga4fun.com/

对于复古街机游戏:

//www.fpgaarcade.com/

大约15年前,我构建了一个PacMan版本:
//www.fpgaarcade.com/kb/pacman/

如果您认为计算机语言大战(C,C ++,ADA,Fortran等)失去控制,请尝试打开FPGA语言线程! 您可以选择Verilog,System Verilog和VHDL(切合实际的选择,而不是某些专有的内部Berkeley语言)。  Go ahead, open a "我应该使用哪个HDL" thread.  I dare you!

 

 离线 卡斯特尔

  • 定期贡献者
  • *
  • 职位:127
  • 国家:  我们
回复:老狗,新花样-学习电子产品
« 在以下问题上回复#29: 2020年12月15日,上午05:18:11»
感谢您提供所有FPGA信息。他们've总是看起来像魔术一样-编写可即时创建硬件的代码(或其他内容)。

当我查看DAD2时,我注意到了他们的FPGA产品,但没有'仔细看。 Nexys A7看起来像是我入门的好地方'm ready.
 


分享我

 掘客    Facebook    SlashDot    可口的    Technorati    推特    谷歌    雅虎
中频