这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 上一修订版 两侧同时换到之后的修订记录 | ||
icore4tx_fpga_5 [2020/05/09 11:22] fmj |
icore4tx_fpga_5 [2020/05/22 14:52] zgf |
||
---|---|---|---|
行 33: | 行 33: | ||
{{ :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: | 行 50: | ||
**4、条件运算符** | **4、条件运算符** | ||
- | * 条件运算是根据条件表达式的运行结果来选择执行表达式的,有3个操作数,其符号为“?:”,使用方式如下:**con_expression ? true_expression : false_expression;** | + | * 条件运算是根据条件表达式的运行结果来选择执行表达式的,有3个操作数,其符号为“?:”,使用方式如下:\\ **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; | ||
行 89: | 行 89: | ||
==== 四、代码讲解 ==== | ==== 四、代码讲解 ==== | ||
**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}} | ||
==== 五、实验步骤 ==== | ==== 五、实验步骤 ==== |