2020-09-30

高云FPGA开发教程:从新建工程到代码下载
本文介绍了如何使用高云FPGA软件GW2AR18进行设计项目开发,包括新建工程、添加代码、分析综合、物理约束设置及生成bit流文件的步骤。代码示例为一个占空比可控的流水灯模块,同时提到该软件不支持直接打开ModelSim进行仿真,但可以通过官方文档编译sim库后使用。最后,预告了后续将讲解逻辑分析仪的使用。

转载或原创(一)

高云FPGA GW2AR18

软件的基本操作我这边就简单的说一下,比较类似于quartus 或 vivado 。
1)新建工程 file->new -> FPGA Design Project ->project name(可改)2)修改工程名和选择工程路径。
在这里插入图片描述
2)添加.v文件
可以直接在已经建好的工程上右键,new file。
3)添加一个我写的demo代码。
module led_water(

	    input           	clk                 , 
	    input           	rst_n               ,
	    input           	sw_ctrl             , 
	    input           	set_en              ,                     
	    input [9:0]     set_freq_step       , 
	    /* output  interfaces*/
	    output         	led 

);

这是一个占空比可控的流水灯代码,这里贴上了代码的module 部分,后面有需要可后面放附件。
4)对代码进行分析综合。
在这里插入图片描述这部分控件,直接在其上双击,便可实现分析综合,以及布局布线。
5)在是生成bit流文件之前,可对工程进行物理约束,针对高云云源软件,有两种方法:
(1)直接双击User Constraints 下的FloorPlaner 控件。
在这里插入图片描述
(2)直接新建.cst文件,进行引脚分配。如 : 在这里插入图片描述6)可以直接进行布局布线,生成bit文件。连接开发板,下载文件,进行板级验证。
在这里插入图片描述
在这里插入图片描述至此,高云的云源软件做基本的工程开发的流程已经完成了,可进行其他项目开发。
该软件并不能像quartus一样可以直接打开modulsim 软件,可参考官方文档,编译完成sim库后,可额外使用modulsim 进行仿真。
关于逻辑分析仪(类signalTap),下篇讲解。

module led_water( 
	input clk,
	input rst_n,
	
	output led
);


reg [23:0]led_cnt;

always@(posedge clk or negedge rst_n)
if(!rst_n)
	led_cnt <= 24'd0;
else if(&led_cnt)
	led_cnt <= 24'd0;
else 
	led_cnt <= led_cnt + 1'b1;
	
	
assign led = led_cnt[23];
endmodule


### SQL BETWEEN 和 DATEFORMAT 性能比较 在SQL查询中,`BETWEEN` 和 `DATEFORMAT` 是两种常见的用于处理日期范围的工具。然而,它们在性能上的表现可能会因数据量、索引使用情况以及数据库引擎的不同而有所差异。 #### 1. **BETWEEN 的性能分析** `BETWEEN` 是一个直接用于比较范围的运算符。当查询条件为 `column BETWEEN value1 AND value2` 时,数据库引擎会直接利用索引来加速查询过程(如果该列上有索引的话)。这意味着对于带有索引的日期列,`BETWEEN` 可以非常高效地执行范围扫描[^1]。 ```sql SELECT * FROM table_name WHERE date_column BETWEEN '2023-01-01' AND '2023-12-31'; ``` 上述查询可以充分利用 `date_column` 上的索引,从而避免全表扫描。因此,在大多数情况下,`BETWEEN` 是一种高效的解决方案。 #### 2. **DATEFORMAT 的性能分析** `DATEFORMAT` 函数通常用于将日期格式化为特定的字符串形式。如果在查询条件中使用 `DATEFORMAT`,例如 `DATEFORMAT(date_column, '%Y-%m') = '2023-01'`,则会导致数据库引擎无法直接使用索引,因为函数调用会强制数据库对每一行进行计算[^1]。 ```sql SELECT * FROM table_name WHERE DATEFORMAT(date_column, '%Y-%m') = '2023-01'; ``` 在这种情况下,即使 `date_column` 上存在索引,查询优化器也无法利用它,从而可能导致全表扫描,尤其是在数据量较大的情况下,这会显著降低查询性能。 #### 3. **性能对比总结** - 如果目标是基于原始日期值进行范围查询,`BETWEEN` 是更优的选择,因为它能够充分利用索引。 - 如果必须对日期进行格式化后再进行比较,则需要谨慎使用 `DATEFORMAT`,因为它会禁用索引并导致更高的CPU开销。 - 在某些场景下,可以通过提前存储格式化后的日期字段来避免运行时的函数调用,从而提升性能[^1]。 #### 示例代码:优化 `DATEFORMAT` 如果必须使用 `DATEFORMAT`,可以通过以下方式优化查询: ```sql -- 提前计算日期范围,避免运行时调用函数 SELECT * FROM table_name WHERE date_column >= STR_TO_DATE('2023-01', '%Y-%m') AND date_column < STR_TO_DATE('2023-02', '%Y-%m'); ``` 这种方法可以确保索引仍然有效,同时避免了对每一行调用 `DATEFORMAT` 函数。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值