基于Quartus II 的PLL IP核模块

一、创建PLL IP核

Tools — MegaWizard Plug-In Manager — 于如下页面进行相关设置

 ps: 若进行仿真,需添加altera_mf模块

二、顶层模块编写

module pll_ip(
	input sys_clk,
	input sys_rst,
	output clk_100m,
	output clk_100m_180d,
	output clk_50m,
	output clk_25m
);

wire locked_sig;
wire rst_n;
assign rst_n = sys_rst & locked_sig; // reset signal for other modules

// pll_clk with high reset
pll_clk	pll_clk_inst (
	.areset (~ sys_rst ),
	.inclk0 ( sys_clk ),
	.c0 ( clk_100m ),
	.c1 ( clk_100m_180d ),
	.c2 ( clk_50m ),
	.c3 ( clk_25m ),
	.locked ( locked_sig )
	);

A. 仿真

三、基于modelsim进行仿真

### 如何在Quartus中使用和仿真除法器IP #### 配置除法器IPQuartus环境中,创建新的项目之后,通过调用IP Catalog来添加所需的除法器IP。选择合适的参数设置对于确保功能正确至关重要。这包括但不限于输入数据宽度、输出精度以及是否启用流水线选项等[^1]。 #### 生成IP文件 完成上述配置后,点击Generate按钮以生成相应的HDL代码和其他必要的支持文件。这些文件会被自动加入到当前工程当中,便于后续的设计集成工作。 #### 编写测试平台代码 为了验证除法器的功能,在顶层模块之外还需要构建一个简单的测试平台(Testbench)。下面给出了一段基于Verilog的示代码用于模拟8位二进制整数之间的相除操作: ```verilog `timescale 1ns / 1ps module tb_divider(); reg clk; reg reset_n; wire [7:0] quotient; // Instantiate the divider core here with appropriate port connections initial begin $dumpfile("divider.vcd"); $dumpvars(0, tb_divider); clk = 0; forever #5 clk = ~clk; // Generate clock signal at 200MHz frequency reset_n = 0; @(posedge clk); @(posedge clk); reset_n = 1'b1; // Apply stimulus to inputs and observe outputs after some delay. // Example input values can be set as follows: // Your instantiation of divider should go here... repeat (10) @(posedge clk); // Wait for several cycles before applying new stimuli or ending simulation. $finish; end endmodule ``` 请注意,实际应用中的实语句需按照所选具体型号的要求填写,并连接好各个信号端口[^3]。 #### 运行仿真并分析结果 利用ModelSim或其他兼容工具加载编译后的设计文件及测试向量,启动运行直至结束。查看波形窗口内的变情况判断逻辑运算是否符合预期;如有必要可进一步调整源码重试直到满意为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值