以前在贴Verilog代码时,都只能挑C++或者C#的语法着色,但两者的主题词毕竟不太一样,透过dudu的帮助,我将Verilog 2001年的主题词加上了,现在博客园也能漂亮的显示Verilog代码了!!
介绍
以下是个典型的Verilog代码,现在主题词都能正确显示,真是太感动了…。
checksum_task_logic 1个的模块(
输入的2 clk,
输入的3 reset_n,
输入的4 去,
输入的5 data_in_ready,
输入的6 [31 :0] data_to_process,
输出的7 [15 :0个]结果
8);
9
10 reg data_in_ready_delay;
11 reg [31 :0] data_in_reg;
12 reg [31 :0] sum_reg;
13
14导线[31 :0] sum_1;
15导线[31 :0] sum_2;
16导线[31 :0] sum_3;
17导线[31 :0] next_sum_reg;
18
上部19 //第一加法器阶段(16位)的折叠和下半
20分配sum_1 = data_in_reg [31 :16] + data_in_reg [15 :0];
21
22 //第二加法器状态(32位) sum_1和以前被存放的总和(sum_reg)
23分配next_sum_reg = sum_1 + sum_reg;
24
在总和记数器上部(运载计数)和下半的25 //折叠
26分配sum_2 = sum_reg [31 :16] + sum_reg [15 :0];
27
在sum_2上部(可能运载)和下半的28 //折叠
29分配sum_3 = sum_2 [31 :16] + sum_2 [15 :0];
30
31 //倒置总和(你的补全)结果的
32分配结果= {~ (sum_3 [15 :0])};
33
34 //延迟登记data_in_ready
35 always@ (posedge clk或negedge reset_n)开始
36,如果(reset_n == 1 ' b0)
37 data_in_ready_delay <= 1 ' b0;
38
39 data_in_ready data_in_ready_delay的<=;
40个结尾// always@
41
42 //给data_in记数器写
43 always@ (posedge clk或negedge reset_n)开始
44,如果(reset_n == 1 ' b0)
45 data_in_reg <= 32 ' h00000000;
46
47 data_in_reg <= data_to_process;
48个结尾// always@
49
50 //给总和记数器写下价值
51 always@ (posedge clk或negedge reset_n)开始
52,如果(reset_n == 1 ' b0)
53 sum_reg <= 32 ' h00000000;
54,如果(去) //清除sum_reg在检查和演算开始
55 sum_reg <= 32 ' h0000_0000;
56,如果(data_in_ready_delay == 1 ' b1)
57 sum_reg <= next_sum_reg;
58
59 sum_reg <= sum_reg;
60个结尾// always@
61
62 endmodule