|
- module ReverseLongBytes( //64位大小端转换 反转长整数字节序模块
- input [63:0] in, //输入:0x0123456789ABCDEF
- output [63:0] out //输出:0xEFCDAB8967452301
- );
- assign out[63:56] = in[7:0];
- assign out[55:48] = in[15:8];
- assign out[47:40] = in[23:16];
- assign out[39:32] = in[31:24];
- assign out[31:24] = in[39:32];
- assign out[23:16] = in[47:40];
- assign out[15:8] = in[55:48];
- assign out[7:0] = in[63:56];
- endmodule
- module ReverseIntBytes( //32位大小端转换 反转整数字节序模块
- input [31:0] in, //输入:0xABCD1234
- output [31:0] out //输出:0x3412CDAB
- );
- assign out[31:24] = in[7:0];
- assign out[23:16] = in[15:8];
- assign out[15:8] = in[23:16];
- assign out[7:0] = in[31:24];
- endmodule
- module ReverseShortBytes( //16位大小端转换 反转短整数字节序模块
- input [15:0] in, //输入:0xABCD
- output [15:0] out //输出:0xCDAB
- );
- assign out[15:8] = in[7:0];
- assign out[7:0] = in[15:8];
- endmodule
- module Swap( //8位半字节交换
- input [7:0] in, //输入:0xA5
- output [7:0] out //输出:0x5A
- );
- assign out[7:4] = in[3:0];
- assign out[3:0] = in[7:4];
- endmodule
- module main (
- input clk, //时钟输入
- output reg led //LED 计算正确点亮 否则熄灭 (低电平点亮)
- );
- wire [63:0] Long;
- wire [31:0] Int;
- wire [15:0] Short;
- wire [7:0] Byte;
- ReverseLongBytes ReverseLongBytes(
- .in(64'h0123456789ABCDEF),
- .out(Long)
- );
- ReverseIntBytes ReverseIntBytes(
- .in(32'hABCD1234),
- .out(Int)
- );
- ReverseShortBytes ReverseShortBytes(
- .in(16'hABCD),
- .out(Short)
- );
- Swap Swap(
- .in(8'hA5),
- .out(Byte)
- );
- always @(posedge clk) begin
- if(Long == 64'hEFCDAB8967452301 && Int == 32'h3412CDAB && Short == 16'hCDAB && Byte == 8'h5A) begin
- led <= 0;
- end else begin
- led <= 1;
- end
- end
-
-
- endmodule
复制代码 |
|