1、实验目的
掌握典型同步时序电路的工作原理和设计方法
掌握时序电路的激励函数、状态图、状态方程的运用
掌握用 Verilog 进行有限状态机的设计、调试、仿真
掌握用 FPGA 实现时序电路功能
2、实验内容
任务 1:原理图方式设计 4 位同步二进制计数器
任务 2:以 Verilog 行为描述方式设计 16 位可逆二进制同步计数 器
3、实验过程
任务 1:原理图方式设计 4 位同步二进制计数器
1.创建工程并创建组件
建立 HDL 工程 MyCounter,创建原理图文件 Counter4b,按原理 图绘制。
新建 Verilog 文件 clk_1s 用作时钟,输入如图的 Verilog 代码
新建 Verilog 文件 Top,右键设为 Set as Top Module,输入如图的 Verilog 代码
2.原理图仿真
建立基准测试波形文件 Counter4b_sim,输入仿真激励信号,在 Process 窗口中选择 Simulate Behavioral Model,可以得到仿真波 形图:
3.建立用户时序约束并为模块的端口指定引脚分配
建立引脚约束文件 K7.ucf,输入代码如图 3.6 所示,为原理图的 每个输入输出端口分配引脚。
4.生成 bit 文件并下载到开发板
略
任务 2:以 Verilog 行为描述方式设计 16 位可逆二进制同步计数器
1.创建工程并绘制原理图
建立 HDL 工程 myRevCounter,创建 Verilog 文件 RevCounter
新建 Verilog 文件 clk_100ms 用作时钟,输入如图的 Verilog 代码
新建 Verilog 文件 Top,右键设为 Set as Top Module,输入如图的 Verilog 代码
2.原理图仿真
建立基准测试波形文件 RevCounter_sim,输入仿真激励信号, 在 Process 窗口中选择 Simulate Behavioral Model,可以得到仿真 波形图:
3.建立用户时序约束并为模块的端口指定引脚分配
建立引脚约束文件 K7.ucf,输入代码如图 3.6 所示,为原理图的 每个输入输出端口分配引脚。
4.生成 bit 文件并下载到开发板
略
4、实验结果
先要感谢某不烦学长,救我一命,当时真的卡了很久,没想到有学长发了实验的专栏
我也后来去问了老师原因,DispNum中是不可以用clk_100ms这些的,因为时间太短,扫描得太快,所以显示出的数字就和预想的不一样,调成系统时钟clk就好了
分频器多看看,posedge是上升沿,别忘了,1个上升沿是半个周期,再过一个下降沿才是完整的一个周期
clk 是 100MHz 的信号,当进行 50_000_000 次分频后,clk_1s 会变化一次,而再过一个 50_000_000 次分频后就会 再变化一次,所以 clk_1s 的周期是 2 次 50_000_000(50MHz)次分频, 所以就把 1 个 100MHz 的信号转换成了一个 1Hz 的信号
没有回复内容