经典低压带隙基准Banba,电流模结构,有版图 VDD=1.5V,输出为890mv,前仿真ppm为22.7,想要别的电压值可以自己再做调整 工艺是smic130nm 包含两个bandgap电路在里面,有一个是有完整版图,有一个没有 也是两个不同的二级密勒补偿运放 有仿真的state,可以直接跑出仿真结果
最近在研究经典低压带隙基准Banba,这玩意儿可有意思啦!它采用电流模结构,而且还有版图哦。
咱这次的实验环境是VDD = 1.5V,输出稳稳地落在890mv。前仿真ppm为22.7,要是你想要别的电压值,自己稍微调整调整就行啦。工艺用的是smic130nm,这可是咱的技术基础呢。
这里面包含了两个bandgap电路,一个是带完整版图的,另一个没有。同时还有两个不同的二级密勒补偿运放,这组合起来就构成了整个基准电路的核心部分。
先说说代码方面吧。在电路实现过程中,电流模结构的代码大概长这样:
module current_mode_structure( input wire clk, input wire rst_n, output reg [15:0] output_current ); // 一些电流生成的逻辑 always @(posedge clk or negedge rst_n) begin if (!rst_n) begin output_current <= 16'b0; end else begin // 这里通过各种电流源和运算来生成合适的电流值 output_current <= calculate_current(); end end function [15:0] calculate_current; // 具体的电流计算逻辑,这里简化表示 calculate_current = 16'b1010101010101010; endfunction endmodule这个代码片段就是简单模拟了电流模结构的部分功能。在always块里,根据时钟和复位信号来控制输出电流。calculate_current函数则是用来具体计算电流值的,这里只是简单给了个示例值。
再看看bandgap电路的代码示例:
module bandgap_circuit( input wire vdd, input wire bias_current, output wire bandgap_voltage ); // 一些基本的晶体管和电阻模型 transistor m1(vdd, bandgap_voltage, bias_current); resistor r1(bandgap_voltage, ground, resistance_value); // 通过晶体管和电阻的特性来生成带隙电压 assign bandgap_voltage = generate_bandgap(); function generate_bandgap; // 复杂的带隙电压生成公式简化表示 generate_bandgap = vdd * 0.6; endfunction endmodule这里展示了bandgap电路如何通过晶体管和电阻来生成带隙电压。通过assign语句将生成的带隙电压输出。
至于二级密勒补偿运放,代码就更复杂些啦,这里就不详细展开了。
重点是这个电路有仿真的state,可以直接跑出仿真结果。这可太方便了,能直观地看到电路的各种性能指标。每次调整一些参数,比如电阻值或者晶体管尺寸,都能迅速看到对输出电压和ppm等指标的影响。就像前仿真ppm为22.7,这个数值就是通过仿真直接得到的,能让我们清楚地知道电路在当前状态下的精度表现。
总的来说,经典低压带隙基准Banba真是个值得深入研究的电路,通过代码和仿真,能一步步探索它的奥秘,期待后续能进一步优化和完善这个电路,挖掘出更多有趣的特性!