时间:2024-08-01 来源:网络搜集 关于我们 0
不同端口位宽的处理
第11节说到我在寝室里拟定了一份新的大学学习课程计划,然后接下来我就要逐步的去实现这个课程的改革。这一节主要是把第10节中还没有讲完的模块映射相关的内容讲完。第10节中讲到了悬空端口的处理,这是模块例化中其中一个比较特殊的情况。还有一种情况就是端口的位宽匹配问题。
2.不同端口位宽的处理
在模块例化的过程中,有时候会遇到这样一种情况:例化模块端口信号位宽和相连的信号位宽不一致。就像下面的代码所示:gen_data为被例化的子模块,其被例化到了top模块中。在测试文件(testbench)中,只把data_in的15、14、13、12位送给了gen_data模块的data_i。gen_data模块的data_i接收到的值应该是16hzzz5,如图1所示。详细点说,就是tb文件中的data_in的15、14、13、12位分别对应的是gen_data模块中data_i的3、2、1、0位。
之所以这样,是因为当被例化模块的端口信号位宽和与之相连的信号位宽不一致时,端口通过无符号数的右对齐截断方式进行匹配。
到这里为止,穿越之重回大学学fpga系列文章已经讲完了module基本概念、输入输出端口、reg、wire、模块例化位置映射法、参数映射法,模块例化的两种特殊情况处理。接下来,将继续以实际代码讲解verilog语法。其中,第11节也穿插了作为一个大学新生,该如何一步一步去学习fpga。前几节娱乐情节过多,后面的章节我想更加偏重专业知识。但是,仍然会以一个初学者的角度来分享fpga的相关知识。
图1