Skip to content

goran is 5G NR radio access network packages that commonly used in telecom RF engineers workflow.

License

Notifications You must be signed in to change notification settings

zulfadlizainal/goran

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

goran

goran is 5G NR radio access network packages that commonly used in the workflow of telecom RF engineers for simulations and calculations. Visit goran project landing page here -> go.dev///goran.

CI Go Reference



Documentations

Static Badge

Visit official documentations page here.

Force official documentations re-indexing to update to latest version: Click Link1 and Link2 and wait for a moment.

Supported Packages

Static Badge

| Technology | Package       | Function                      | Purpose                                          |
|------------|---------------|-------------------------------|--------------------------------------------------|
| 5G NR      | nrConversion  | BandwidthToRB()               | Converts Bandwidth (MHz) to RB (Count)           |
| 5G NR      | nrConversion  | McsToQm()                     | Converts MCS to Modulation Order (bits/Symbol)   |
| 5G NR      | nrConversion  | McsToR()                      | Converts MCS to Target Code Rate (R)             |
| 5G NR      | nrConversion  | McsToSe()                     | Converts MCS to Spectral Efficiency (bps/Hz)     |
| 5G NR      | nrConversion  | NumerologyToScs()             | Converts Numerology (µ) to SCS (kHz)             |
| 5G NR      | nrConversion  | NumerologyToSlotPerFrame()    | Converts Numerology (µ) to Slot/Frame (Count)    |
| 5G NR      | nrConversion  | NumerologyToSlotPerSubframe() | Converts Numerology (µ) to Slot/Subframe (Count) |
| 5G NR      | nrConversion  | NumerologyToSymbolPerSlot()   | Converts Numerology (µ) to Symbol/Slot (Count)   |
| 5G NR      | nrConversion  | QCIToPacketDelay()            | Converts 5QI to Packet Delay (ms)                |
| 5G NR      | nrConversion  | QCIToPacketLoss()             | Converts 5QI to Packet Loss Rate (%)             |
| 5G NR      | nrConversion  | QCIToPriority()               | Converts 5QI to Priority                         |
| 5G NR      | nrConversion  | QCIToType()                   | Converts 5QI to Bit Rate Type                    |
| 5G NR      | nrDownlink    | Tbs()                         | Calculates Transport Block Size (Bytes)          |
| 5G NR      | nrMeasurement | SsRsrp()                      | Calculates SS-RSRP (dBm)                         |
| 5G NR      | nrMeasurement | SsRsrq()                      | Calculates SS-RSRQ (dB)                          |
| 5G NR      | nrMeasurement | SsSinr()                      | Calculates SS-SINR (dB)                          |
| 5G NR      | nrMeasurement | SsRssi()                      | Calculates SS-RSSI (dBm)                         |
| 5G NR      | nrPathloss    | FreeSpace()                   | Generates Free Space Path Loss (dB)              |

Getting Started

Static Badge

# Go to project directory.
cd <project-directory> 

# Initialize Go modules.
go mod init <module-name> 

# Download `goran` package.
go get github.com/zulfadlizainal/goran 

# Get updated package. (Optional)
go get -u github.com/zulfadlizainal/goran

Static Badge

package main

import (
	"fmt"
	"log"

	// Import goran package
	"github.com/zulfadlizainal/goran/pkg/nrConversion"
)

func main() {

	bandwidth := 20
	freqrange := "Sub6" 
	scs := 30 

	// Call the function
	rbCount, err := nrConversion.BandwidthToRB(bandwidth, freqrange, scs)

	if err != nil {
		log.Fatalf("Error: %v", err)
	}

	fmt.Printf("RB count = %vRB\n", rbCount)

}

Verification

Static Badge

git clone github.com/zulfadlizainal/goran.git # Clone repository.
cd goran/pkg/<package-name> # Go to test directory.
go test # Run Go test.

Contribution

Static Badge

# What to Build

1. Flexible. No explicit roadmap. 
2. Build functions to address common RF engineers workflow.
3. Avoid functions creation for non-existing problems.
# Wish List

1. Generate urban and rural path loss.
2. Calculate PRACH power control, PUSCH power control. 
3. Calculate impact of measurement gap to downlink throughput.
4. Examples of goran packages usage.

Static Badge

# Guidelines

1. No dependencies outside Go standard library.
2. Include comprehensive comments for the codes. Documentation is automated based on the comments.
3. Include test for each functions with desired and undesired input.
4. Include error control. Return value for error is flexible but need to specify.


Buy Me A Coffee

Licenses

GNU AFFERO GPL Version 3

About

goran is 5G NR radio access network packages that commonly used in telecom RF engineers workflow.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages