FPGA/HDL 人员开发利器-TerosHDL(开源 IDE)
HDL 人员开发利器-TerosHDL(开源 IDE)
https://terostechnology.github.io/terosHDLdoc/about/about.html
TerosHDL是啥
TerosHDL 的目标是为 HDL 开发人员提供一个开源 IDE,该 IDE 具有软件开发人员常用的功能。IDE 包含一堆工具,其中最重要的是VSCode 插件。一些工具是由Teros Technology组织开发的,而另一些则来自开源项目。所有工具都组织在不同的后端,并通过插件暴露给 GUI。
安装
安装 VSCode
https ://code.visualstudio.com/
在扩展中搜索TerosHDLinside VSCode 并单击安装按钮:
安装其他:
python
安装过程略。
make
正常安装,不用修改,安装完毕后将下面路径(make的安装路径)加入到系统环境中。
C:\Program Files (x86)\GnuWin32\bin
安装系统下TerosHDL
在vscode中点击左侧TerosHDL,在终端输入:
pip install teroshdl
完成后如下:
检查缺少的环境
按照下图检查一下TerosHDL还缺少什么环境,自己按照需求按照即可。
完成后如下:
实例演示
我们新建一个状态机的.v文件,具体如下:
module fsm_sale(
input clk ,
input rst_n ,
input [1:0] in ,
output reg [1:0] out ,
output reg out_vld
);
//---------------定义信号----------------------//
reg [3:0] state ;
//---------------定义信号状态变量--------------------//
parameter S0 = 4'b0001 ;
parameter S1 = 4'b0010 ;
parameter S2 = 4'b0100 ;
parameter S3 = 4'b1000 ;
//---------------一段式状态机--------------------//
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
state <= S0;
out <= 0;
out_vld <= 0;
end
else begin
case(state)
S0:begin
if(in==1)begin
state <= S1;out <= 0;out_vld <= 0;
end
else if(in==2)begin
state <= S2;out <= 0;out_vld <= 0;
end
else begin
state <= state;out <= 0;out_vld <= 0;
end
end
S1:begin
if(in==1)begin
state <= S2;out <= 0;out_vld <= 0;
end
else if(in==2)begin
state <= S3;out <= 0;out_vld <= 0;
end
else begin
state <= state;out <= 0;out_vld <= 0;
end
end
S2:begin
if(in==1)begin
state <= S3;out <= 0;out_vld <= 0;
end
else if(in==2)begin
state <= S0;out <= 0;out_vld <=1;
end
else begin
state <= state;out <= 0;out_vld <= 0;
end
end
S3:begin
if(in==1)begin
state <= S0;out <= 0;out_vld <=1;
end
else if(in==2)begin
state <= S0;out <= 1;out_vld <=1;
end
else begin
state <= state;out <= 0;out_vld <= 0;
end
end
default:state <= S0;
endcase
end
end
endmodule
使用VSCode打开:
点击右上角的编译按钮,等待一会:
点击查看网表:
就能看到电路综合出来的网表:
点击旁边的查看状态机就能看到状态机流程图:
点击module文档说明,就能看到这个项目/文件自动生成的说明文档(极其中意的功能):
导出来的文档如下:
Entity: fsm_sale
File: fsm_sale.v
Diagram
Generics
Generic name | Type | Value | Description |
---|---|---|---|
S0 | 4'b0001 | ||
S1 | 4'b0010 | ||
S2 | 4'b0100 | ||
S3 | 4'b1000 |
Ports
Port name | Direction | Type | Description |
---|---|---|---|
clk | input | ||
rst_n | input | ||
in | input | [1:0] | |
out | output | [1:0] | |
out_vld | output |
Signals
Name | Type | Description |
---|---|---|
state | reg [3:0] |
Processes
unnamed: ( @(posedge clk or negedge rst_n) )
Type: always
State machines
总结
作为一个开源的IDE,功能比较完整,其中仿真部分没演示,大家可以自行探索,真的极其适合初学者,安装过程不复杂,都是常规的应用,下面给出来上面需要的安装文件。
https://github.com/suisuisi/teroshdl
其实我最中意的还是文档功能,对于维护HDL真的超级方便。
最后就是TerosHDL使用视频教程:
点下【在看】给小编加鸡腿
jason263: 问题是还只转载了一部分,就没了
一粟_: “四、总结 Tips:判断计数器是奇数还是偶数主要有判断data_out[0]和取余数两种方法,前者综合后耗损的资源太多不推荐前者。” 这里应该是后者(取余数)消耗资源多吧
persistever: ov5640能配置15S长曝光嘛?
m0_74398970: 博主你好!我有个疑问,就这个蝶形运算单元由于加减法的存在,输出位宽应该增加一位,即下级乘法器的输入位宽就会变成17×16,我这里也应该是采取截断变成16×16bit吗?
Oo饿不死oO: 真优质资源 +1