surenyi
4 years ago
commit
a3e8357216
8 changed files with 500 additions and 0 deletions
@ -0,0 +1 @@ |
|||
*.log |
@ -0,0 +1,147 @@ |
|||
|
|||
[Device] |
|||
Family = lc4k; |
|||
PartNumber = LC4128V-10T100I; |
|||
Package = 100TQFP; |
|||
PartType = LC4128V; |
|||
Speed = -10; |
|||
Operating_condition = IND; |
|||
Status = Production; |
|||
EN_PinGLB = yes; |
|||
EN_PinMacrocell = yes; |
|||
|
|||
[Revision] |
|||
Parent = lc4k128v.lci; |
|||
DATE = 07/22/2020; |
|||
TIME = 19:02:52; |
|||
Source_Format = Pure_Verilog_HDL; |
|||
Synthesis = Synplify; |
|||
|
|||
[Ignore Assignments] |
|||
|
|||
[Clear Assignments] |
|||
|
|||
[Backannotate Assignments] |
|||
|
|||
[Global Constraints] |
|||
|
|||
[Location Assignments] |
|||
layer = OFF; |
|||
ft_por = Pin, 94, -, A, 6; |
|||
gpio0_a1 = Pin, 92, -, A, 2; |
|||
pwr_0v8_en = Pin, 41, -, E, 0; |
|||
pwr_1v2_en = Pin, 42, -, E, 2; |
|||
pwr_1v8_en = Pin, 43, -, E, 4; |
|||
pwr_2v5_en = Pin, 44, -, E, 6; |
|||
pwr_3v3_en = Pin, 47, -, E, 8; |
|||
rst_done_led = Pin, 56, -, F, 6; |
|||
ft_pwr_ctl0 = Pin, 97, -, A, 8; |
|||
ft_pwr_ctl1 = Pin, 98, -, A, 10; |
|||
pcierst_0_ = Pin, 48, -, E, 10; |
|||
pcierst_1_ = Pin, 49, -, E, 12; |
|||
pcierst_2_ = Pin, 50, -, E, 14; |
|||
pcierst_3_ = Pin, 53, -, F, 0; |
|||
pcierst_4_ = Pin, 54, -, F, 2; |
|||
cpld_clk_33M = Pin, 88, -, -, -; |
|||
|
|||
[Group Assignments] |
|||
layer = OFF; |
|||
|
|||
[Resource Reservations] |
|||
layer = OFF; |
|||
|
|||
[Fitter Report Format] |
|||
|
|||
[Power] |
|||
|
|||
[Source Constraint Option] |
|||
|
|||
[Fast Bypass] |
|||
|
|||
[OSM Bypass] |
|||
|
|||
[Input Registers] |
|||
|
|||
[Netlist/Delay Format] |
|||
NetList = VERILOG; |
|||
|
|||
[IO Types] |
|||
layer = OFF; |
|||
|
|||
[Pullup] |
|||
|
|||
[Slewrate] |
|||
|
|||
[Region] |
|||
|
|||
[Timing Constraints] |
|||
layer = OFF; |
|||
|
|||
[HSI Attributes] |
|||
|
|||
[Input Delay] |
|||
|
|||
[opt global constraints list] |
|||
|
|||
[Explorer User Settings] |
|||
|
|||
[Pin attributes list] |
|||
|
|||
[global constraints list] |
|||
|
|||
[Global Constraints Process Update] |
|||
|
|||
[pin lock limitation] |
|||
|
|||
[LOCATION ASSIGNMENTS LIST] |
|||
|
|||
[RESOURCE RESERVATIONS LIST] |
|||
|
|||
[individual constraints list] |
|||
|
|||
[Attributes list setting] |
|||
|
|||
[Timing Analyzer] |
|||
|
|||
[PLL Assignments] |
|||
|
|||
[Dual Function Macrocell] |
|||
|
|||
[Explorer Results] |
|||
|
|||
[VHDL synplify constraints] |
|||
|
|||
[VHDL spectrum constraints] |
|||
|
|||
[verilog synplify constraints] |
|||
|
|||
[verilog spectrum constraints] |
|||
|
|||
[VHDL synplify constraints list] |
|||
|
|||
[VHDL spectrum constraints list] |
|||
|
|||
[verilog synplify constraints list] |
|||
|
|||
[verilog spectrum constraints list] |
|||
|
|||
[ORP Bypass] |
|||
|
|||
[Register Powerup] |
|||
RESET = ft_por, gpio0_a1, pwr_0v8_en, pwr_1v2_en, pwr_1v8_en, pwr_2v5_en, pwr_3v3_en, |
|||
rst_done_led, pcierst_0_, pcierst_1_, pcierst_2_, pcierst_3_, pcierst_4_; |
|||
|
|||
[Constraint Version] |
|||
version = 1.0; |
|||
|
|||
[ORP ASSIGNMENTS] |
|||
layer = OFF; |
|||
|
|||
[Node attribute] |
|||
layer = OFF; |
|||
|
|||
[SYMBOL/MODULE attribute] |
|||
layer = OFF; |
|||
|
|||
[Nodal Constraints] |
|||
layer = OFF; |
@ -0,0 +1,147 @@ |
|||
|
|||
[Device] |
|||
Family = lc4k; |
|||
PartNumber = LC4128V-10T100I; |
|||
Package = 100TQFP; |
|||
PartType = LC4128V; |
|||
Speed = -10; |
|||
Operating_condition = IND; |
|||
Status = Production; |
|||
EN_PinGLB = yes; |
|||
EN_PinMacrocell = yes; |
|||
|
|||
[Revision] |
|||
Parent = lc4k128v.lci; |
|||
DATE = 07/22/2020; |
|||
TIME = 19:02:52; |
|||
Source_Format = Pure_Verilog_HDL; |
|||
Synthesis = Synplify; |
|||
|
|||
[Ignore Assignments] |
|||
|
|||
[Clear Assignments] |
|||
|
|||
[Backannotate Assignments] |
|||
|
|||
[Global Constraints] |
|||
|
|||
[Location Assignments] |
|||
layer = OFF; |
|||
ft_por = Pin, 94, -, A, 6; |
|||
gpio0_a1 = Pin, 92, -, A, 2; |
|||
pwr_0v8_en = Pin, 41, -, E, 0; |
|||
pwr_1v2_en = Pin, 42, -, E, 2; |
|||
pwr_1v8_en = Pin, 43, -, E, 4; |
|||
pwr_2v5_en = Pin, 44, -, E, 6; |
|||
pwr_3v3_en = Pin, 47, -, E, 8; |
|||
rst_done_led = Pin, 56, -, F, 6; |
|||
ft_pwr_ctl0 = Pin, 97, -, A, 8; |
|||
ft_pwr_ctl1 = Pin, 98, -, A, 10; |
|||
pcierst_0_ = Pin, 48, -, E, 10; |
|||
pcierst_1_ = Pin, 49, -, E, 12; |
|||
pcierst_2_ = Pin, 50, -, E, 14; |
|||
pcierst_3_ = Pin, 53, -, F, 0; |
|||
pcierst_4_ = Pin, 54, -, F, 2; |
|||
cpld_clk_33M = Pin, 88, -, -, -; |
|||
|
|||
[Group Assignments] |
|||
layer = OFF; |
|||
|
|||
[Resource Reservations] |
|||
layer = OFF; |
|||
|
|||
[Fitter Report Format] |
|||
|
|||
[Power] |
|||
|
|||
[Source Constraint Option] |
|||
|
|||
[Fast Bypass] |
|||
|
|||
[OSM Bypass] |
|||
|
|||
[Input Registers] |
|||
|
|||
[Netlist/Delay Format] |
|||
NetList = VERILOG; |
|||
|
|||
[IO Types] |
|||
layer = OFF; |
|||
|
|||
[Pullup] |
|||
|
|||
[Slewrate] |
|||
|
|||
[Region] |
|||
|
|||
[Timing Constraints] |
|||
layer = OFF; |
|||
|
|||
[HSI Attributes] |
|||
|
|||
[Input Delay] |
|||
|
|||
[opt global constraints list] |
|||
|
|||
[Explorer User Settings] |
|||
|
|||
[Pin attributes list] |
|||
|
|||
[global constraints list] |
|||
|
|||
[Global Constraints Process Update] |
|||
|
|||
[pin lock limitation] |
|||
|
|||
[LOCATION ASSIGNMENTS LIST] |
|||
|
|||
[RESOURCE RESERVATIONS LIST] |
|||
|
|||
[individual constraints list] |
|||
|
|||
[Attributes list setting] |
|||
|
|||
[Timing Analyzer] |
|||
|
|||
[PLL Assignments] |
|||
|
|||
[Dual Function Macrocell] |
|||
|
|||
[Explorer Results] |
|||
|
|||
[VHDL synplify constraints] |
|||
|
|||
[VHDL spectrum constraints] |
|||
|
|||
[verilog synplify constraints] |
|||
|
|||
[verilog spectrum constraints] |
|||
|
|||
[VHDL synplify constraints list] |
|||
|
|||
[VHDL spectrum constraints list] |
|||
|
|||
[verilog synplify constraints list] |
|||
|
|||
[verilog spectrum constraints list] |
|||
|
|||
[ORP Bypass] |
|||
|
|||
[Register Powerup] |
|||
RESET = ft_por, gpio0_a1, pwr_0v8_en, pwr_1v2_en, pwr_1v8_en, pwr_2v5_en, pwr_3v3_en, |
|||
rst_done_led, pcierst_0_, pcierst_1_, pcierst_2_, pcierst_3_, pcierst_4_; |
|||
|
|||
[Constraint Version] |
|||
version = 1.0; |
|||
|
|||
[ORP ASSIGNMENTS] |
|||
layer = OFF; |
|||
|
|||
[Node attribute] |
|||
layer = OFF; |
|||
|
|||
[SYMBOL/MODULE attribute] |
|||
layer = OFF; |
|||
|
|||
[Nodal Constraints] |
|||
layer = OFF; |
@ -0,0 +1,25 @@ |
|||
[Normal] |
|||
synlibXRef=lc4k_pvlg, Verilog.TASKLSVlog, 0, Yes |
|||
_vlog_std_v2001=lc4k_pvlg, Verilog.TASKLSVlog, 0, True |
|||
_EdfFrequency=lc4k_pvlg, Verilog.TASKLSVlog, 0, 200 |
|||
_EdfInConsFile=lc4k_pvlg, Verilog.TASKLSVlog, 0, |
|||
_EdfSymFSM=lc4k_pvlg, Verilog.TASKLSVlog, 0, True |
|||
_EdfFanin=lc4k_pvlg, Verilog.TASKLSVlog, 0, 20 |
|||
_EdfMaxMacrocell=lc4k_pvlg, Verilog.TASKLSVlog, 0, 16 |
|||
_EdfPerDesignOptTiming=lc4k_pvlg, Verilog.TASKLSVlog, 0, 0 |
|||
_EdfOutputPreFile=lc4k_pvlg, Verilog.TASKLSVlog, 0, True |
|||
_EdfMapLogic=lc4k_pvlg, Verilog.TASKLSVlog, 0, False |
|||
_EdfInsertIO=lc4k_pvlg, Verilog.TASKLSVlog, 0, False |
|||
_EdfOutNetForm=lc4k_pvlg, Verilog.TASKLSVlog, 0, None |
|||
_EdfNumCritPath=lc4k_pvlg, Verilog.TASKLSVlog, 0, 3 |
|||
_EdfUnconsClk=lc4k_pvlg, Verilog.TASKLSVlog, 0, True |
|||
_EdfNumStartEnd=lc4k_pvlg, Verilog.TASKLSVlog, 0, 0 |
|||
_EdfResSharing=lc4k_pvlg, Verilog.TASKLSVlog, 0, True |
|||
_EdfPushTirstates=lc4k_pvlg, Verilog.TASKLSVlog, 0, True |
|||
_EdfAllowDUPMod=lc4k_pvlg, Verilog.TASKLSVlog, 0, False |
|||
[STRATEGY-LIST] |
|||
Normal=True, 1595388407 |
|||
[TOUCHED-REPORT] |
|||
Design.bl5File=1595415772 |
|||
[synthesis-type] |
|||
tool=Synplify |
@ -0,0 +1,11 @@ |
|||
JDF B |
|||
// Created by Version 1.7 |
|||
PROJECT ft2004 |
|||
DESIGN ft2004 Normal |
|||
DEVKIT LC4128V-10T100I |
|||
ENTRY Pure Verilog HDL |
|||
MODULE .\src\ft2004_top.v |
|||
MODSTYLE top Normal |
|||
SYNTHESIS_TOOL Synplify |
|||
SIMULATOR_TOOL ActiveHDL |
|||
TOPMODULE top |
@ -0,0 +1 @@ |
|||
MODULE top DEFIN .\src\ft2004_top.v |
@ -0,0 +1,168 @@ |
|||
`timescale 1ns / 1ps |
|||
|
|||
////////////////////////////////////////////////////////////////////////////////// |
|||
module top( |
|||
input cpld_clk_33M, //88, 33M, 30NS |
|||
input por_rst, //low_effect, 73 |
|||
|
|||
input ft_pwr_ctl0, //97 |
|||
input ft_pwr_ctl1, //98 |
|||
|
|||
output pwr_0v8_en, //41 |
|||
output pwr_1v2_en, //42 |
|||
output pwr_1v8_en, //43 |
|||
output pwr_2v5_en, //44 |
|||
output pwr_3v3_en, //47 |
|||
output [4:0] pcierst, //bit0: 48~49~50~53 ~54:bit4 |
|||
output ft_por, //94 |
|||
output rst_done_led, //56 |
|||
output gpio0_a1 //92 |
|||
); |
|||
reg pwr_0v8_en_r; |
|||
reg pwr_1v2_en_r; |
|||
reg pwr_1v8_en_r; |
|||
reg pwr_2v5_en_r; |
|||
reg pwr_3v3_en_r; |
|||
reg [4:0]pcierst_r; |
|||
reg ft_por_r; |
|||
reg rst_done_led_r; |
|||
reg gpio0_a1_r; |
|||
|
|||
assign pwr_0v8_en = pwr_0v8_en_r; |
|||
assign pwr_1v2_en = pwr_1v2_en_r; |
|||
assign pwr_1v8_en = pwr_1v8_en_r; |
|||
assign pwr_2v5_en = pwr_2v5_en_r; |
|||
assign pwr_3v3_en = pwr_3v3_en_r; |
|||
assign pcierst = pcierst_r; |
|||
assign ft_por = ft_por_r; |
|||
assign rst_done_led = rst_done_led_r; |
|||
assign gpio0_a1 = gpio0_a1_r; |
|||
|
|||
reg tick_en = 0; |
|||
|
|||
reg [15:0] uint_1ms_count; |
|||
reg [16:0] msclk_count; |
|||
reg tick_1ms; |
|||
|
|||
`define TICK_1MS 33000 |
|||
|
|||
always @(posedge cpld_clk_33M) begin |
|||
if (!tick_en) begin |
|||
uint_1ms_count <= 16'd0; |
|||
tick_1ms <= 0; |
|||
end else if (uint_1ms_count == `TICK_1MS) begin |
|||
uint_1ms_count <= 16'd0; |
|||
tick_1ms <= 1; |
|||
end else begin |
|||
uint_1ms_count <= uint_1ms_count + 1'd1; |
|||
tick_1ms <= 0; |
|||
end |
|||
end |
|||
|
|||
always @(posedge cpld_clk_33M) begin |
|||
if (!tick_en) |
|||
msclk_count <= 17'd0; |
|||
else if (tick_1ms) begin |
|||
msclk_count <= msclk_count + 1'd1; |
|||
end |
|||
end |
|||
|
|||
localparam CPU_STATE_IDLE = 0, CPU_STATE_PWR = 1, CPU_STATE_RUN = 2, CPU_STATE_RST = 3; |
|||
reg [3:0] cpu_state = CPU_STATE_IDLE; |
|||
|
|||
reg power_on = 0; |
|||
reg [3:0] pr_count; |
|||
|
|||
always @(posedge ft_pwr_ctl1 or negedge ft_pwr_ctl0) begin |
|||
if (!ft_pwr_ctl0) |
|||
pr_count <= 4'b0000; |
|||
else if (cpu_state == CPU_STATE_RUN) |
|||
pr_count <= pr_count + 1'b1; |
|||
else |
|||
pr_count <= 4'b0000; |
|||
end |
|||
|
|||
reg [3:0] cycle_a, cycle_b, cycle_c; |
|||
|
|||
always @(posedge cpld_clk_33M) begin |
|||
cycle_a <= pr_count; |
|||
cycle_b <= cycle_a; |
|||
cycle_c <= cycle_b; |
|||
end |
|||
|
|||
always @(posedge cpld_clk_33M) begin |
|||
case (cpu_state) |
|||
CPU_STATE_IDLE: begin |
|||
tick_en <= 1; |
|||
gpio0_a1_r <= 0; |
|||
rst_done_led_r <= 1; |
|||
cpu_state <= CPU_STATE_PWR; |
|||
end |
|||
CPU_STATE_PWR: begin |
|||
if (power_on) begin |
|||
tick_en <= 0; |
|||
cpu_state <= CPU_STATE_RUN; |
|||
end |
|||
end |
|||
CPU_STATE_RUN: begin |
|||
if (cycle_c == 4'b0001) begin |
|||
gpio0_a1_r <= 1'b1; |
|||
rst_done_led_r <= 1'b0; |
|||
end |
|||
if (cycle_c == 4'b0100) begin |
|||
cpu_state <= CPU_STATE_RST; |
|||
tick_en <= 1'b1; |
|||
end |
|||
end |
|||
CPU_STATE_RST: begin |
|||
if (!power_on) begin |
|||
tick_en <= 1'b0; |
|||
rst_done_led_r <= 1; |
|||
cpu_state <= CPU_STATE_IDLE; |
|||
end |
|||
end |
|||
default: cpu_state <= cpu_state; |
|||
endcase |
|||
end |
|||
|
|||
always @(posedge cpld_clk_33M) begin |
|||
if (!por_rst) begin |
|||
pwr_0v8_en_r <= 0; |
|||
pwr_1v2_en_r <= 0; |
|||
pwr_1v8_en_r <= 0; |
|||
pwr_2v5_en_r <= 0; |
|||
pwr_3v3_en_r <= 0; |
|||
pcierst_r <= 5'b00000; |
|||
ft_por_r <= 0; |
|||
end else if (power_on == 0) begin |
|||
case(msclk_count) |
|||
17'd1: pwr_3v3_en_r <= 1; |
|||
17'd100: begin |
|||
pwr_1v2_en_r <= 1; |
|||
pwr_2v5_en_r <= 1; |
|||
end |
|||
17'd130: pwr_0v8_en_r <= 1; |
|||
17'd160: pwr_1v8_en_r <= 1; |
|||
17'd270: pcierst_r <= 5'h1f; |
|||
17'd290: begin ft_por_r <= 1; power_on <= 1; end |
|||
endcase |
|||
end else if (power_on == 1) begin |
|||
case (msclk_count) |
|||
17'd10: begin |
|||
pcierst_r <= 5'h00; |
|||
ft_por_r <= 1'b0; |
|||
end |
|||
17'd120: pwr_1v8_en_r <= 1'b0; |
|||
17'd140: pwr_0v8_en_r <= 1'b0; |
|||
17'd160: begin |
|||
pwr_1v2_en_r <= 1'b0; |
|||
pwr_2v5_en_r <= 1'b0; |
|||
end |
|||
17'd310: pwr_3v3_en_r <= 1'b0; |
|||
17'd1000: power_on <= 1'b0; |
|||
endcase |
|||
end |
|||
end |
|||
|
|||
endmodule |
|||
|
Loading…
Reference in new issue