|
本帖最后由 lcytms 于 2016-11-14 17:06 编辑
建模主体框架
首先建立工程文件夹b2bcd,编写顶层模块b2bcd.v文件。
module b2bcd (din, dout);
input [19:0] din;
output [23:0] dout;
wire [43:0] data [20:0];
assign data[0] = {24'b0, din}; //第一步:准备阶段。将输入二进制数在高位补齐全0的BCD位,生成二进制全序列的初始状态。
shift s01 (.datain(data[0]), .dataout(data[1])); //第二步:移位阶段。依次进行20个小步操作。具体动作在shift子模块中描述。
shift s02 (.datain(data[1]), .dataout(data[2]));
shift s03 (.datain(data[2]), .dataout(data[3]));
shift s04 (.datain(data[3]), .dataout(data[4]));
shift s05 (.datain(data[4]), .dataout(data[5]));
shift s06 (.datain(data[5]), .dataout(data[6]));
shift s07 (.datain(data[6]), .dataout(data[7]));
shift s08 (.datain(data[7]), .dataout(data[8]));
shift s09 (.datain(data[8]), .dataout(data[9]));
shift s10 (.datain(data[9]), .dataout(data[10]));
shift s11 (.datain(data[10]), .dataout(data[11]));
shift s12 (.datain(data[11]), .dataout(data[12]));
shift s13 (.datain(data[12]), .dataout(data[13]));
shift s14 (.datain(data[13]), .dataout(data[14]));
shift s15 (.datain(data[14]), .dataout(data[15]));
shift s16 (.datain(data[15]), .dataout(data[16]));
shift s17 (.datain(data[16]), .dataout(data[17]));
shift s18 (.datain(data[17]), .dataout(data[18]));
shift s19 (.datain(data[18]), .dataout(data[19]));
shift s20 (.datain(data[19]), .dataout(data[20]));
assign dout = data[20][43:20]; //第三步:输出阶段。取出BCD部分,作为输出。
endmodule
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?我要注册
x
|