这里是小赵的NJUST数字系统综合设计代码仓库,欢迎参考。
如果觉得有帮到你请点亮右上角的star!
**欢迎更多同学成为此仓库的贡献者!如果你想成为此仓库的贡献者,请通过QQ(1598718223)**联系我。届时只需拉取我的远程库,在你的本地仓库添加你的修改,最后push上来就好啦!
本人是2020级电信专业的,这个实验课是由王建新老师指导,实验内容和任务要求可能和大家有所不同,但是一些共性的模块代码还是可以来参考的。
把“2022”显示在左边四位LED数码管上,且点亮第4个 LED数码管的小数点,把个人学号最后4位显示在右边四位LED数 码管上,如下图所示;
数码管的片选扫描时钟是将板载100MHz主频分频而来的10kHz时钟。
-
频率控制字K(8位二进制)用左边拨码开关SW7-SW0输入;
-
对应的频率值显示在8位LED数码管上,且点亮第4个LED数码管的小数点。 $$ f=\frac{K}{2^N} f_c $$ 其中 N = 8为相位累加器字长,fc = 10MHz为DDS时钟频率。
-
显示切换由右边地址开关DIP1-DIP0控制
dip[1:0] 数码管显示 00 2022.学号最后4位 01 设置的频率值(小数点在KHZ上)
-
DDS原理框图
-
时钟产生:100MHZ主频分频而成的10MHZ时钟
-
存储器IP核的生成
- 生成ROM波形文件dds_sin.coe
- 通过示波器测量信号波形与频率值;
- 检查示波器测量得到的频率值是否与设置的频率值一致。
-
设计电路,测量外部输入正弦信号(加到A/D转换器)的频率 (范围:0-2MHz);
-
测量的频率值显示在8位LED数码管上,且点亮第4个LED数码管的小数点;
-
检查FPGA测量得到的频率值是否与输入信号频率值一致, 检查0-2MHz范围内的频率测量误差,要求误差绝对值不超过1Hz。
注:频率测量电路调试时先用开发板产生的正弦信号作为输入,测试/验收时 对信号源产生的正弦信号要求同样可以测量频率。
-
在手机上输入代表频率的7位十进制数字(0000000-2000000)Hz
-
对应的频率值显示在8位LED数码管上,且点亮第4个LED数码管的小数点。
-
使用示波器测量产生的正弦信号频率值,检查是否与设置的频率值一致。
- 要求1:误差绝对值小于20kHz。
- 要求2:误差绝对值小于2kHz。
- 设计了一个基于PWM原理的呼吸灯。
- 设计了一个调制度固定的AM调幅输出功能。
- 所有功能的Verilog HDL 程序需要合在一起运行;
- 程序运行后复位信号只能使用一次;
- 成绩以第一次验收为准,验收时要准备好回答问题。
注:如使用VSCode等编辑器打开我的代码文件,请切换至GB2312编码模式以查看中文注释。vivado中的默认编码也为GB2312。
| 文件名 | 功能 |
|---|---|
| top_module.v | 顶层模块 |
| freq_devision.v | 分频模块 |
| seg_display.v | 四个一组的数码管模块 |
| DDS.v | 有两个DDS模块 |
| swbin_to_dec.v | 二进制转BCD模块 |
| AD_fre.v | 测频顶层模块(转方波后测频) |
| cymometer_direct.v | 直接测频模块 |
| bt_uart.v | 蓝牙顶层模块(注意蓝牙部分均为高电平复位) |
| clk_div.v | 蓝牙自带分频 |
| clk_gen.v | 蓝牙串口时钟产生 |
| cmd_parse.v | 蓝牙接收端命令解析模块 |
| bcd_bin.v | BCD转二进制模块 |
| clogb2.txt | 消抖模块的头文件 |
| debouncer.v | 按键消抖模块 |
| meta_harden.v | 异步信号转同步信号 |
| reset_bridge.v | 产生同步复位信号 |
| rst_gen.v | 蓝牙串口复位信号产生模块 |
| uart_baud_gen.v | 串口波特率产生模块 |
| uart_rx.v | 串口接收端顶层模块 |
| uart_rx_ctl.v | 串口接收端控制模块 |
| pwm.v | 呼吸灯模块 |
| AM_create.v | 产生AM调制波模块 |
| cos_make.v | AM载波产生模块 |
| dds_sin.coe | 8*2^8 DDS的coe文件 |
| dds_sin14.coe | 14*2^14 DDS的coe文件 |
| cos.coe | AM所用有符号coe文件 |
祝大家实验愉快!















