京微齐力FPGA开发工具Fuxi 2022的使用指南

1. 创建Fuxi FPGA Project工程: Project菜单下"New Project .."命令

会在P1_prj目录下穿件一个工程目录pll_test目录,设置顶层module名字为pll_test(也可以是其他的顶层文件名,工程创建好后也可以修改)。点击"Next",进入器件选择页面

选在"P1P060N0V324C7"器件,最下方的"Perform Timing Analysis Base on"选择"Typical"时序模型。点击"Finish",完成工程设置。

2. 生成PLL IP,左侧"Project Manager"下双击"Wizard Manager"

 

 

 设置PLL IP的名字为"MyPll",点击"Next"

设置Input frequenccy位25Mhz(必须和板上外部的时钟频率一致),其他使用缺省设置,点击"Next"

 设置Clock0 output Frequency为275Mhz,点击Next

如上所示设置,点击Next

 点击"Finish",完成PLL IP生成。

3. 创建debugware IP

 

4. 创建测试工程顶层文件: pll_test.v, 将文件保存在工程目录的子文件加src目录下,注意提示信息,软件会自动将新建的源代码添加到工程目录下

/*
Description of module:
Test performance of PLL and couter.
Clock source is 25MHz extern oscillator.
--------------------------------------------------------------------------------
*/

`define SIM

module pll_test(
  clk,
  reset,
  up_led
  );

input	clk;
input	reset; //no use
output[3:0]	up_led;
	
wire 	clk;
wire 	reset;
wire  reset_g;
wire [3:0]	up_led;
	
wire 	clk0;
wire 	clk1;
wire 	clk2;
reg [25:0]	cnt;

assign up_led = {cnt[25:24],cnt[22:21]};

MyPll myPll_u(
				.clkin0	  (clk),
				.clkout0	(clk0),//single output up to 275MHz
				.locked	(pll_lock)
				);

  always @ (posedge clk0)
  begin
      cnt <= cnt + 1'b1; //cnt power on initial value is all 1
  end

`ifndef SIM

debugware_v2_1 debugware_v2_1_u(
    .data_in_0( cnt[25:0] ),
    .ref_clk_0( clk0 )
);

`endif
endmodule

 5. RTL 仿真

创建pll_test_tb文件

`timescale 1 ns/100ps

module pll_test_tb;

reg clk;
reg reset;
wire [1:0] led;
wire led1;
wire [1:0] up_led;
wire pll_lock;


pll_test u_pll_test(
  .clk(clk),
	.reset(reset),
//	.led(led),
//	.led1(led1),
	.up_led(up_led)//,
//	.pll_lock(pll_lock)
	);

	initial
	begin
		 clk = 1'b0;
		 reset = 1'b0;
#100 reset = 1'b1;
	end

///
//
// Clock generation
//

always #20 clk = ~clk;

endmodule

 设置Questasim/Modelsim的exe执行目录,一般在仿真软件安装目录的win64子目录下,如果是Questasim工具,需要手工复制Questasim.exe为Modelsim.exe,因为Fuxi工具只会自动找"Modelsim.exe"

 仿真文件的工程设置

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
import numpy as np import matplotlib.pyplot as plt # 设置模拟参数 num_boids = 50 # 粒子数 max_speed = 0.03 # 最大速度 max_force = 0.05 # 最大受力 neighborhood_radius = 0.2 # 邻域半径 separation_distance = 0.05 # 分离距离 alignment_distance = 0.1 # 对齐距离 cohesion_distance = 0.2 # 凝聚距离 # 初始化粒子位置和速度 positions = np.random.rand(num_boids, 2) velocities = np.random.rand(num_boids, 2) * max_speed # 模拟循环 for i in range(1000): # 计算邻域距离 distances = np.sqrt(np.sum(np.square(positions[:, np.newaxis, :] - positions), axis=-1)) neighbors = np.logical_and(distances > 0, distances < neighborhood_radius) # 计算三个力 separation = np.zeros_like(positions) alignment = np.zeros_like(positions) cohesion = np.zeros_like(positions) for j in range(num_boids): # 计算分离力 separation_vector = positions[j] - positions[neighbors[j]] separation_distance_mask = np.linalg.norm(separation_vector, axis=-1) < separation_distance separation_vector = separation_vector[separation_distance_mask] separation[j] = np.sum(separation_vector, axis=0) # 计算对齐力 alignment_vectors = velocities[neighbors[j]] alignment_distance_mask = np.linalg.norm(separation_vector, axis=-1) < alignment_distance alignment_vectors = alignment_vectors[alignment_distance_mask] alignment[j] = np.sum(alignment_vectors, axis=0) # 计算凝聚力 cohesion_vectors = positions[neighbors[j]] cohesion_distance_mask = np.linalg.norm(separation_vector, axis=-1) < cohesion_distance cohesion_vectors = cohesion_vectors[cohesion_distance_mask] cohesion[j] = np.sum(cohesion_vectors, axis=0) # 计算总受力 total_force = separation + alignment + cohesion total_force = np.clip(total_force, -max_force, max_force) # 更新速度和位置 velocities += total_force velocities = np.clip(velocities, -max_speed, max_speed) positions += velocities # 绘制粒子 plt.clf() plt.scatter(positions[:, 0], positions[:, 1], s=5) plt.xlim(0, 1) plt.ylim(0, 1) plt.pause(0.01)
06-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值