|
- module ascii_case_change( //大小写字母转换模块 (组合逻辑)
- input [7:0] in, //字母Ascii码输入
- input sel, //1:小写到大写 0:大写到小写
- output reg [7:0] out //字母Ascii码输出
- );
- always @(*) begin
- out = in;
- if(sel) begin
- if(out >= 8'd97 && out <= 8'd122) begin
- out = out - 8'd32;
- end
- end else begin
- if(out >= 8'd65 && out <= 8'd90) begin
- out = out + 8'd32;
- end
- end
- end
- endmodule
- module main(
- input clk, //下降沿锁存输入,上升沿锁存输出
- //CLK下降沿之前改变输入:
- input sel, //1:小写到大写 0:大写到小写
- input [7:0] in, //8位宽字母Ascii码输入
- //CLK上升沿之后读取输出:
- output reg [7:0] out //8位宽字母Ascii码输出 (寄存器)
- );
- initial out = 8'b0;
- reg [7:0] rascii; //字母Ascii码输入寄存器
- wire [7:0] wascii; //字母大小写转换结果线网
- reg rsel; //字母大小写方向寄存器
- ascii_case_change ascii_case_change( //模块实例化
- .in(rascii),
- .sel(rsel),
- .out(wascii)
- );
- always @(negedge clk) begin
- rascii <= in;
- rsel <= sel;
- end
- always @(posedge clk) begin
- out <= wascii;
- end
- endmodule
复制代码 |
|