一个简单的PWM发生和捕获Verilog IP设计

这次IP的设计是有一个非常现实的应用需求的,在测试系统中,我们需要对芯片出来的PWM进行捕获或者对芯片出来的频率信号进行计算,另外还需要产生一定的PWM波形激励,用于测试芯片的PWM捕获功能,不过这里只是提供简单的PWM输出,诸如对称PWM,多通道同步等功能,这里暂时没有实现。首先我们来看看PWM波形捕获的设计,具体的需求是要计算输入信号的频率和占空比信息。简单的想法就是用一个计数器对波形进...

继续阅读 »

Picorv32处理器中断的实现

Picorv32是一个非常精简的RISCV核心,实现了RISC-V RV32IMC指令集。源代码开源且核心只有一个不到3000行的Verilog文件,FPGA实现非常简单,可以使用开源的iverilog软件进行仿真,非常适合FPGA学习和性能要求不高的一些FPGA应用场合。实际上Picorv32已经有很多应用,甚至有ASIC上的应用,这里作为学习目的,我也用这个小核心做了一个非常简单的SOC...

继续阅读 »

Python 元编程实现类方法的注册

Python元编程,听起来就是一个非常高大上的名词,确实,元编程这个概念我研究了一天也没怎么研究明白。其实这个概念真的是在实际应用场景中很难用到,但是说巧不巧,这还真的就被我碰上了,无奈之下,只好研究一番。首先我们还是来看看应用需求:我的程序中要实现一个类似命令分发器的功能,也就是根据不同的命令字符串调用相应的函数,这个功能一般都是通过函数的字典实现的,我在最开始也是通过这种方式实现的,但是...

继续阅读 »

Python unittest 中使用mock

没错,我似乎是喜欢上了unittest,最近非常痴迷于研究测试代码,这个问题也是在最近做测试中碰到的一个实际问题,这里就这个问题的解决方式做一个简单的记录。具体的问题是这样的,我的代码会用到一些和PC硬件交互的一些代码,比如从串口读写数据,这个时候我们不能每次测试的时候在测试机器上搞一个串口,另外我还会用到和硬件相关的Python库,比如树莓派的RPi.GPIO,这个库在PC上是无法安装的,...

继续阅读 »

Python中的unittest

unittest是Python中自带的一个用于单元测试的库,可以满足我们大部分的测试需求。以前撸个代码一般只是侧重功能实现,往往对于测试不屑一顾,但是在最近一个小工程上,我初步尝试了一下测试驱动开发的开发流程,发现测试对于开发效率是有提升的,虽然要编写很多测试相关的代码,但是一旦测试完善起来,对于后期我们的代码重构或者代码调试是有很大帮助的。对于比较小的工程,直接使用unittest基本可以...

继续阅读 »