政务网站队伍建设情况汇报,北海住房和城乡建设部网站,发外链平台,wordpress微信群多个二维码文章目录 三输入数的大小比较问题分析verilog codeTestBench Code综合图仿真波形图 三输入数的大小比较 在数字芯片设计中#xff0c;通常把完成特定功能且相对独立的代码编写成子模块#xff0c;在需要的时候再在主模块中例化使用#xff0c;以提高代码的可复用性和设计的层… 文章目录 三输入数的大小比较问题分析verilog codeTestBench Code综合图仿真波形图 三输入数的大小比较 在数字芯片设计中通常把完成特定功能且相对独立的代码编写成子模块在需要的时候再在主模块中例化使用以提高代码的可复用性和设计的层次性方便后续的修改。
请编写一个子模块将输入两个8bit位宽的变量data_a,data_b并输出data_a,data_b之中较小的数。并在主模块中例化实现输出三个8bit输入信号的最小值的功能。
子模块的信号接口图如下 使用Verilog HDL实现以上功能并编写testbench验证。
输入描述
clk系统时钟rst_n异步复位信号低电平有效a,b,c8bit位宽的无符号数
输出描述
d8bit位宽的无符号数表示a,b,c中的最小值
问题分析
需要调用3个模块
第一个模块比较 T 时刻的 a 和 bT1 时刻出来 tmp1第二个模块比较 T 时刻的 a 和 cT1 时刻出来 tmp2第三个模块比较 T1 时刻的 tmp1 和 tmp2T2 时刻出来 d
如果只用2个子模块那么 T 时刻比较 a 和 b 得到 tmp1再比较 tmp1 和 c 的时候是 T1 时刻的 c 和 T1 时刻的 tmp1而 tmp1 代表的是 T 时刻 a 和 b 的较小值所以这时候比较的 T 时刻的 a、b 和 T1 时刻的 c显然不符合要求。
所以不能只例化两次子模块因为主模块例化的子模块在综合时是复制一样的电路在执行时是并行执行的。如果只例化两次第二次例化的值并不是第一个子模块输出的最小值
verilog code TestBench Code 综合图 仿真波形图