用户工具

站点工具


icore4tx_fpga_5

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
icore4tx_fpga_5 [2020/05/09 11:20]
fmj
icore4tx_fpga_5 [2022/04/01 11:36] (当前版本)
sean
行 2: 行 2:
 |技术支持电话|**0379-69926675-801**||| |技术支持电话|**0379-69926675-801**|||
 |技术支持邮件|Gingko@vip.163.com||| |技术支持邮件|Gingko@vip.163.com|||
-|技术论坛|http://​www.eeschool.org||| 
 ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^ ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 |  V1.0  |  2020-05-09 ​ |  gingko ​ |  初次建立 ​ |  |  V1.0  |  2020-05-09 ​ |  gingko ​ |  初次建立 ​ | 
行 33: 行 32:
 {{ :​icore4tx:​icore4tx_fpga_5_1.png?​direct |表5-1}} {{ :​icore4tx:​icore4tx_fpga_5_1.png?​direct |表5-1}}
  
-    * 1、在基本算术运算符应用过程中需要注意: +    * 在基本算术运算符应用过程中需要注意: 
-    2、在进行整数除法运算时,省略所有小数部分,只保留整数部分; +      1、在进行整数除法运算时,省略所有小数部分,只保留整数部分; 
-    3、在进行算术运算操作时,如果操作符的某个操作数出现x或z时,则整个操作的运算结果为x。+      2、在进行算术运算操作时,如果操作符的某个操作数出现x或z时,则整个操作的运算结果为x。
  
 **2、逻辑运算符** **2、逻辑运算符**
行 50: 行 49:
  
 **4、条件运算符** **4、条件运算符**
-  * 条件运算是根据条件表达式的运行结果来选择执行表达式的,有3个操作数,其符号为“?:”,使用方式如下: +  * 条件运算是根据条件表达式的运行结果来选择执行表达式的,有3个操作数,其符号为“?:”,使用方式如下:\\        ​**con_expression ? true_expression : false_expression;​**
-  * **con_expression ? true_expression : false_expression;​**+
   * 在运行条件运算符时,若条件表达式(con_expression)为真,则运行真表达式(true_expression),否则,运行假表达式(false_expression)。   * 在运行条件运算符时,若条件表达式(con_expression)为真,则运行真表达式(true_expression),否则,运行假表达式(false_expression)。
   * 例如:wire data_out = sel_en ? a : b;   * 例如:wire data_out = sel_en ? a : b;
行 62: 行 60:
  
 **6、拼接运算符** **6、拼接运算符**
-  * 拼接运算是将两个或多个操作数的某些位拼接起来得到一个新数据的表达式,其运算符号为“{}”,被拼接的操作数用“,”隔开,其表达式如下: +  * 拼接运算是将两个或多个操作数的某些位拼接起来得到一个新数据的表达式,其运算符号为“{}”,被拼接的操作数用“,”隔开,其表达式如下:**{signal1,​signal2}**
-**{signal1,​signal2}**+
  
 **7、移位运算符** **7、移位运算符**
行 79: 行 76:
   * 赋值运算就是Verilog HDL的赋值语句,根据赋值操作后变量改变方式的不同,赋值语句又分为连续赋值和过程赋值两种,如表5-8所示。   * 赋值运算就是Verilog HDL的赋值语句,根据赋值操作后变量改变方式的不同,赋值语句又分为连续赋值和过程赋值两种,如表5-8所示。
 {{ :​icore4tx:​icore4tx_fpga_5_8.png?​direct |表5.8}} {{ :​icore4tx:​icore4tx_fpga_5_8.png?​direct |表5.8}}
-  * 通常,连续赋值运算用于“assign”语句中,用于对wire型变量进行赋值,“=”两侧的操作数是随时变化的 +  * 通常,连续赋值运算用于“assign”语句中,用于对wire型变量进行赋值,“=”两侧的操作数是随时变化的例如:assign a = b,当b信号发生变化时,a也随之变化。
-  * 例如:assign a = b,当b信号发生变化时,a也随之变化。+
   * 在过程赋值中,按照操作数改变时刻的不同,分为阻塞赋值(=)和非阻塞赋值(<​=)两种。   * 在过程赋值中,按照操作数改变时刻的不同,分为阻塞赋值(=)和非阻塞赋值(<​=)两种。
     * 1、阻塞赋值方式     * 1、阻塞赋值方式
行 92: 行 88:
 ==== 四、代码讲解 ==== ==== 四、代码讲解 ====
 **1、 算术运算符表达式** **1、 算术运算符表达式**
-  * 1、以实验二led工程为例,打开工程,图3.1所示。+  * 其代码下: 
 +<code verilog>​ 
 +/​*************************************************/​ 
 +//​算数运算符:"​+"​、"​-"​、"​*"​、“/​”  
 + assign out_a = x1 + y1;//​加法运算符表达式 
 + assign out_b = y1 - x1;//​减法运算符表法式 
 + assign out_c = 2 * x1;//​乘法运算符 
 + assign out_d = y1 / 5;//​除法运算符 
 +</​code>​
  
-  ​* 2、点击工具栏Tools,拉才当中选中PlanAhead  I/O Pin Planning(PlanAhead) – Pre – Synthesis…。 +**2、逻辑运算符表达式** 
-{{ :​icore4tx:​icore4tx_fpga_3_2.png?​direct ​|图3.2}} +  * 其代码如: 
-  * 3、如果有提示点击Yes,稍等片刻后可能会弹出欢迎界面,闭欢迎界面,然后视图如下: +<code verilog>​ 
-{{ :icore4tx:icore4tx_fpga_3_3.png?direct |图3.3}} +/​*************************************************
-  * 4、在I/O Ports栏面,点击Scalar ports 前面的+,展开引脚列表;然后对应引脚的Site栏选定引脚标号完成引脚绑定。如下图所示。 +//​逻辑运算符:“!”、“&&​”、“||”,​逻辑运算符的结果只能是“1”或者“0” 
-{{ :​icore4tx:​icore4tx_fpga_3_4.png?​direct |图3.4}+ assign out_e = !x2;//​逻辑求反表达式 
-  5分配好以后关闭该对话框,重新进行编译;果编译无报错,则引脚分配完成。+ assign out_f = x2 && y2;//​逻辑与表达式 
 + assign out_g = x2 || y2;//​逻辑或表达式 
 + 
 +</​code>​ 
 +**3、关系运算符表达式** 
 +  * 其代码如下: 
 +<code verilog>​ 
 +/​*************************************************/​ 
 +//​关系运算符:“<​”、“>​”、“<​=”、“>​=” 
 +//​条件运算符表达式:con_expression ? true_expression ? false_expression;​ 
 + assign out_h = (x3 < y3) ? (y3 - x3) 4'​d0;//​小于号表达式 
 + assign out_i = (x3 > y3) ? 4'​d0 ​(y3 + x3);//​大于号表达式 
 + assign out_j = (y3 <= z3) (y3 - x3) : 4'​d0;//​小于等于号表达式 
 + assign out_k = (y3 >= z3) ? (y3 - x3) : 4'​d0;//​大于等于号表达式 
 + 
 +</​code>​ 
 +**4、按位运算符表达式** 
 +  * 其代码如: 
 +<code verilog>​ 
 +/​*************************************************/​ 
 +//​按位运算符:~、“&​”、“|”、“^”、“~^” 
 +//按位运算中若两个操作数位宽不一致,则会自动将两个操作数右对齐,高位补0后进行运算  
 + assign out_l = ~x4;//​按位求反表达式 
 + assign out_m = x4 & y4;//​按位与表达式 
 + assign out_n = x4 | y4;//​按位或表达式 
 + assign out_o = x4 ^ y4;//​按位异或表达式 
 + assign out_p = x4 ~^ y4;//​按位同或表达式 
 + 
 +</​code>​ 
 +**5、拼接运算符** 
 +  * 其代码如下 
 +<code verilog>​ 
 +/​*************************************************/​ 
 +//​拼接运算符 
 + assign q = {x5,y5};//​拼接运算符表达式 
 + 
 +</​code>​ 
 +**6移位运算符表达式** 
 +  * 其代码下: 
 +<code verilog>​ 
 +/​*************************************************/​ 
 +//​移位运算符:“<<​”、“>>​”  
 + assign r = x6 << 3;//​左移表达式 
 + assign s = x6 >>​3;//​右移表达式 
 + 
 +</​code>​
  
-**2、TCL文件分配引脚** 
-  * 1、还是以实验二LED实验为例,选中工程,右键点击New Source …。 
-{{ :​icore4tx:​icore4tx_fpga_3_5.png?​direct |图3.5}} 
-  * 2、新建文件类型为Implementation Constraints File,File name栏输入文件名,如下图所示,然后点击Next。 
-{{ :​icore4tx:​icore4tx_fpga_3_6.png?​direct |图3.6}} 
-  * 3、点击Finish。 
-{{ :​icore4tx:​icore4tx_fpga_3_7.png?​direct |图3.7}} 
-  * 4、可以在左侧边栏看到工程目录下多了一个.ucf格式的文件,在右边编辑区输入下图中的引脚约束信息,如图所示;引脚约束信息的语法定义如下: 
-          *  **NET  “端口名称” LOC = 引脚编号 | IOSTANDARD = “电压”** 
-{{ :​icore4tx:​icore4tx_fpga_3_8.png?​direct |图3.8}} 
-  * 5、点击保存,并编译工程;如果信息输入正确,编译通过,则Implement Design 前面会出现绿色“√”;则引脚分配完成。 
-{{ :​icore4tx:​icore4tx_fpga_3_9.png?​direct |图3.9}} 
  
 ==== 五、实验步骤 ==== ==== 五、实验步骤 ====
icore4tx_fpga_5.1588994430.txt.gz · 最后更改: 2020/05/09 11:20 由 fmj