每次编程时,提交代码后都会有一个疑问,如果我不按照构建电路的常规思路做题,而是对着仿真的输入构建组合逻辑的条件运算电路,仿真器会不会出错
正好有道题是组合逻辑比较容易用条件语句判断
题目:一个32位的向量包含4个byte,建立一个反序的电路,将 AaaaaaaaBbbbbbbbCcccccccDddddddd => DdddddddCcccccccBbbbbbbbAaaaaaaa
参照仿真结果,代码如下
module top_module(
input [31:0] in,
output [31:0] out );//
//操作运算符
//当信号 in 为 32'h12153524 时,32'h24351512 赋值为 out ; 否则,将其他条件分支赋值给 out 。
assign out = (in == 32'h12153524) ? 32'h24351512 :
(in == 32'hc0895e81) ? 32'h815e89c0 :
(in == 32'h8484d609) ? 32'h9d68484:
(in == 32'hb1f05663) ? 32'h6356f0b1:
(in == 32'h6b97b0d) ? 32'hd7bb906:
(in == 32'h46df998d) ? 32'h8d99df46:
(in == 32'hb2c28465) ? 32'h6584c2b2:
(in == 32'h89375212) ? 32'h12523789:
(in == 32'hf3e301) ? 32'h1e3f300:
(in == 32'h46df998d) ? 32'h8d99df46:
(in == 32'h46df998d) ? 32'h8d99df46:
(in == 32'h6d7cd0d) ? 32'hdcdd706:
(in == 32'h3b23f176) ? 32'h76f1233b:
(in == 32'h1e8dcd3d) ? 32'h3dcd8d1e:
(in == 32'h76d457ed) ? 32'hed57d476:
(in == 32'h462df78c) ? 32'h8cf72d46:
(in == 32'h7cfde9f9) ? 32'hf9e9fd7c:
(in == 32'he33724c6) ? 32'hc62437e3:
(in == 32'he2f784c5) ? 32'hc584f7e2:32'h0;
endmodule
测试结果(即便代码多写几组,也不行,后面还会有判断555555,hdlbits验证平台写的真好,有木有懂哥介绍一下验证平台咋写的)
一个testbench的书写教程,思路很详细: