mirror of
https://gitee.com/eda-development/eda_fpga.git
synced 2025-05-17 15:07:14 +08:00
克隆主分支
This commit is contained in:
82
README.md
Normal file
82
README.md
Normal file
@ -0,0 +1,82 @@
|
||||
# eda_qt
|
||||
|
||||
### -介绍
|
||||
eda软件开发
|
||||
|
||||
## - 开发需求
|
||||
### ------------001------------
|
||||
点击“新建模块”按钮后,弹出一对话框,如:
|
||||

|
||||
|
||||
用户可输入:模块名称、input端口数量、output端口数量、inout端口数量
|
||||
点击ok后,将出现一“矩形图”,代表着该模块
|
||||

|
||||
上图是我们要开发的软件里用的矩形图
|
||||
这是我们仿照的软件里的截图,模块名为123,input、output、inout都为1
|
||||

|
||||
点击某一端口时,应做到可以修改端口的属性,包括:
|
||||
|端口名:要在矩形图上体现
|
||||
|输入输出类型:可以在input、output、inout中选
|
||||
|数据类型:可以在wire、reg中选
|
||||
|数据长度:可设置正整数值
|
||||
|颜色:此功能目前可先不做。。
|
||||
### ------------002------------
|
||||
双击模块矩形,可查看此模块所包含的子模块
|
||||
此时用户只需要输入算法代码 如:assign c = a & b;
|
||||
其他代码由软件自动生成。
|
||||

|
||||
其中第一段的格式为module xxx\[*\](端口名); 如用户在最开始的对话框中填写模块名为123,且整个模块中所有的端口为a、b、c三个时
|
||||
软件将会生成module 123\[*\](a,b,c);
|
||||
**第二段** 代码为:input/output/inout 端口名;例如用户设置a为input,b为output,c为inout。则代码为
|
||||
input a; output b; inout c;
|
||||
**第三段** 代码为:端口数据类型 端口名;例如用户定义a端口为wire型,b、c端口为reg型,则:
|
||||
wire a; reg b; reg c;
|
||||
第四段代码为之前用户输入的算法代码
|
||||
最后是固定句式:endmodule 相当于这个模块结束了
|
||||
另外要注意:当端口的数据长度定义为i(正整数)时,相应的在上述 **第二段、第三段** 代码中要有所改变,在端口名前加[i-1:0]
|
||||
例如:用户定义了p0为3位
|
||||
 
|
||||
则p0前面加[2:0]
|
||||
### ------------003------------
|
||||
应有“保存模块”和“生成代码”两个按钮。其中:
|
||||
保存模块:做到将此次用户新建的模块里的所有内容打包保存 下次用户双击时可以直接在软件里打开
|
||||
生成代码:将软件生成的代码 让用户选择位置保存。保存为 **verilog目录** 目录下应有 **此模块及其内部子模块** 所有的verilog代码文件 **扩展名为.v**
|
||||
### ------------004------------
|
||||
Verilog代码高亮规则
|
||||

|
||||
### ------------005------------
|
||||
在上层模块下添加子模块 可用线将子模块的端口连接 并生成实例化代码
|
||||
1. 添加子模块
|
||||
在左侧选中已有的模块后,在工作区的父模块中点击一下 可将左侧的模块作为子模块添加进去
|
||||

|
||||
如图,我在module1中添加了两个add作为子模块,软件自动命名为add1和add2
|
||||

|
||||
2. 子模块之间连线
|
||||
可在菜单栏的“连线”按钮进行两个子模块的端口之间的连线
|
||||

|
||||
**注意:连线只能从output开始,input结束** 。另有对 **inout类型** 的补充见 **第4点**
|
||||
此时,数据线的名称为: **输出模块_输出端口** 如图有两条线,分别是从 **add1的CO、add2的S** 输出
|
||||
所以 信号线的名称分别为 **add1_CO** 、 **add2_S**
|
||||

|
||||
3. 生成代码
|
||||
下面是软件生成代码
|
||||

|
||||
4. 补充
|
||||
**inout** 类型的端口 既可以作为 **输出** 也可以作为 **输入**
|
||||
即对于 **inout** 来说 有:
|
||||
**inout** -------》input
|
||||
output------》 **inout**
|
||||
**inout** -------》 **inout**
|
||||
### ------------006------------
|
||||
New Constrain功能
|
||||
点击New Constrain后,弹出一跟New Module **功能结构** 一样的对话框
|
||||

|
||||
注意,实际上是和New Module的对话框区分开的,分别在菜单栏的New下
|
||||
此时,工作区内生成的图型框与与New Module生成的几乎一致,都是由各种端口围绕在矩形周围,为与Module矩形区分,将其称为Constrain矩形
|
||||

|
||||
与 **005** 中生成子模块类似,在左侧选择已有的模块后,点击工作区的矩形图,将会把选中的Module置于Constrain矩形中。
|
||||
用户可通过上面的工具栏中的 **连线** 工具 将Constrain的端口和Module端口连接,输入只能到输入,输出只能到输出。
|
||||

|
||||
然后将会自动生成 **约束文件** 的代码 如下(还暂未具体研究规则)
|
||||

|
||||
constrain保存后生成.const文件;生成的代码保存为.qsf文件。
|
Reference in New Issue
Block a user