0%

IIR系统的设计

在之前我们讨论了数字滤波器的表示等,而在这一部分,我们将讨论如何设计一个数字滤波器
对于一个滤波器而言,一个频率的波输入后,只会改变振幅与相位,因此我们可以将不同频率带的信号滤除

相似的,我们可以认为数字滤波器的设计就是设计一个具有我们想要的频率响应

Read more »

z变换

离散时间傅里叶变换的局限性与z变换介绍

傅里叶变换对于一部分序列并不收敛
例如$X(\omega)=\sum x(n)e^{-j\omega n}$我们需要其收敛,需要判断其条件

可以使用三角不等式,最终会得到前者收敛的条件为$\sum |x(n)|<\infty$(绝对可和)

我们之前所讨论的稳定性,可以得到一个稳定系统中的$H(\omega)$是绝对可和的

Read more »

最近在学习基于DE10-Nano的FPGA程序设计,这个过程有相对比较复杂的环境配置和一些容易犯的错误,在这里记录一下

环境的配置与操作流程

  1. DE10-Nano所使用的FPGA的编号为Cyclone V 5CSEBA6U23I7,在配置Quartus的时候可以方便一点
  2. 包含有仿真的项目,首先指定仿真工具使用ModelSim;在主程序基本完成后(记得编译),自动生成TestBranch脚本;最后将其加入到仿真设定中
  3. 每次编译后都要重新生成TestBranch,所以建议改一下文件名
  4. 每一次不同的配置前注意是否放入SD卡以及拨码开关的位置情况
  5. 对于HPS中的的文件传输,我们可以使用rz -Z的方式实现文件传输
  6. 如果希望使用HPS来刷写FPGA,那么分以下几步
    1. 调节所有拨码开关到打开
    2. 向FAT分支中添加rbf文件,命名为soc_system.rbf
  7. 由于GLIBC的版本问题,所有的C程序应当放在DE10-Nano上编译

HPS编写注意

  1. 对于输入输出的部分至少要有两个连接在AMM上,否则会因为内存地址只有1而出错

Verilog编写注意

  1. 不能在不同的always块中对同一个变量修改
  2. 对于不同状态进行编码时,可以参考这张表
    Alt text
  3. 非阻塞复制的操作计算是在时钟边沿到来之前的值
  4. 如果一个always块对某个寄存器赋值,而另外一个always块判断这个寄存器的值,那么这个值对应于时钟沿到来前的值(类似于非阻塞赋值)

    此时需要正确使用非阻塞赋值,避免出现冲突

  5. 时序逻辑中,使用非阻塞赋值
  6. 注意在按钮摁下的过程会有非常多的时钟周期

    例如每次摁下按钮,将某一个量加一,这个时候有两种解决方案,一个是使用按钮的上升沿触发,另外一种是使用系统时钟,处理按钮按下事件是否为第一次触发

  7. 例如复位”高电平触发”,是指当信号为高电平时,会发生复位
  8. 在编写Soc系统中时,需要注意output是接口输出,从内存到FPGA(方向别搞错)
  9. 在编写模块时的参数都是wire

ModelSim使用注意

  1. 为了和系统时钟相匹配,需要记得修改时间尺度
  2. TestBranchalways块中**记得把@allvec删去,否则无法仿真

数据的优劣和有效信息量的多少是决定机器学习算法能够学的多好的核心要素,因此,我们在喂给机器学习算法之前确保去检查和预处理一个数据集非常重要,在这一章,我们将介绍以下内容:

  1. 移除和内插空白值
  2. 将分类数据整形为机器学习算法
  3. 为模型建构选择相关的特征
    Read more »

今天配置了samba服务器,用来放一些共享文档便于查阅,这里记录一下过程以及遇到的问题

在Linux服务器上配置samba

参考资料
需要注意到,尽量不要使用默认账户去访问,因此需要添加专门用来访问的账户
过程要先在sudo adduser username进行设定,再在sudo smbpasswd -a new_user
同时,需要注意:在授权远程用户具有rwx权限前要先保证这个账户本地具有rwx权限,例如要分享一个文件夹,即使在samba的配置文件中授权了这个用户的访问,但如果用户自身没有修改等权限,那么即使远程连接上了samba,还是会提示缺乏权限

在Windows上连接samba

由于Windows服务器那个阴间的密码管理(个人感受),所以连接的时候不能简单地在运行里面输入或者”新建网络位置”,而是应当参考这个方法(不过如果是匿名只读用户应该不用担心)

Fish

看这里